2012-03-24 59 views
2

我正在尝试为我的童子军队伍创建一份工作名单,而且我正在生成一份工作问题。在一个数组中循环前进的项目

我有一个数组,其中包含为人民的工作。然后,我使用循环显示与某个人相关的工作。

有什么办法可以让我的工作提高一个吗?

例如:

Person 1  -  Job 1 
Person 2  -  Job 2 
Person 3  -  Job 3 

这则转到:

Person 1 -  Job 2 
Person 2 -  Job 3 
Person 3 -  Job 1 

然后

Person 1 -  Job 3 
Person 2 -  Job 2 
Person 3 -  Job 1 

但是因为用户可以改变一个组中的人数(从2 - 20),我怎么能在没有硬编码的情况下让这个过程发生?

+0

我不太肯定什么尝试。我已经看到了当前,下一个,以前的阵列的东西,但我甚至不知道这是否可以帮助我。我已经得到了比人们更多的工作(简单检查是否有人比工作更多,增加更多工作,说没有工作,并且下降到2人,并且硬编码在一起工作) – ixchi 2012-03-24 02:44:58

回答

1

从我可以告诉你,你想循环的工作,同时保持人员固定。

如果是这样的话,你可以在1个循环做到这一点:

<?php 

$persons = array(

'Person 1' =>  'Job 1', 
'Person 2' =>  'Job 2' , 
'Person 3' =>  'Job 3' 

); 

//Get the 'persons' 
$keys = array_keys($persons); 

//Get the 'jobs' 
$jobs = array_values($persons); 

foreach ($i = 0; $i < count($keys); $i++){ 

    //Remove first value and reinsert it to the end of the array 
    $firstValue = array_shift($jobs); 
    $jobs[] = $firstValue; 

    //Add the keys back to the array 
    $result = array_combine($keys, $jobs); 
    var_dump($result); //Do whatever you want to the result here. 
} 
+0

这似乎很好。我将如何去循环我的$ names数组中的数据和我的$ jobs数组到$ persons数组中? – ixchi 2012-03-24 03:01:50

+0

你的意思是你想把'$ names'和'$ jobs'结合到一个名为'$ persons'的关联数组中吗?如果是这种情况,请使用'$ persons = array_combine($ names,$ jobs);' – F21 2012-03-24 03:05:30

+0

是的。谢谢,这已经解决了我的问题。 – ixchi 2012-03-24 03:24:18

0

你有两个不同的数组?一个为一个人,另一个为工作?如果是这种情况,我将循环访问person数组,然后在作业数组中循环与person数组相同的次数(从0开始并每次递增)。假设人员和工作是平等的。如果你澄清我可能会有的任何问题,我可以改变我的答案。

For i = 0 to i = person_array.length - 1 
    For j = 0 to j = person_array.length - 1 
     int k = j // to show the starting point for the job so first time through job 1, second job 2, etc 
     print person_array[i] " - " job_array[k] 
     if k = job_array.length then j = 0 // starts at the beginning or the job array 
    end for 
end for 
+0

我不确定那是什么语言,或者如何将其转换为PHP。 – ixchi 2012-03-24 02:50:09

1
  • 把第一元件在临时变量
  • 通过一个循环运行阵列和阵列的当前元素设置为下一个
  • 阵列的最后一个元素设置为临时变量
+0

我试过这个,它对我来说好像不太好。循环中的代码将数组的下一个元素设置为上面的代码是什么? – ixchi 2012-03-24 03:04:28

0
<?php 

$array = array('one' => '1', 'two' => '2', 'three' => '3', 'four' => '4'); 

$keys = array_keys($array); 
$vals = array_values($array); 

$vals[] = array_shift($vals); 

$new = array_combine($keys, $vals); 

print_r($new); 

?> 

输出:

Array 
(
    [one] => 2 
    [two] => 3 
    [three] => 4 
    [four] => 1 
) 
相关问题