我正在努力为我的童子军部队创建一份工作名单,而且我在创造就业机会方面遇到了一些问题。
我有一个包含人们工作的数组。然后我使用一个循环来显示与一个人相关的工作。
我有什么办法可以把工作搬到一边吗?
例如:
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 :(得分:1)
答案 1 :(得分: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.
}
答案 2 :(得分: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
答案 3 :(得分: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
)