我正在尝试编写一个圣诞节礼物清单。例如:Steve为Jo购买,Edward为Ally购买等。我需要处理19个人。
目前我已经完成了两个数组。我使用shuffle来打乱原始名称,然后将它们相加并存储到多维数组中。它可以工作,但是有以下问题:
1. shuffle不会考虑到一个人买自己的礼物。(即:多维数组具有相同的值。例如:[15]=>Array([0]=>Ben[1]=>Ben)) 2. 如何为家庭成员制定例外规则?例如:Ben不能为Ellen、Dave和Chilli购买礼物等。
我已经尝试查看各种数组方法,但是没有更多答案。
我想到了这样的思路:
如果值相同,请重新洗牌并再次检查。 否则,继续下一个值并再次检查。
目前我已经完成了两个数组。我使用shuffle来打乱原始名称,然后将它们相加并存储到多维数组中。它可以工作,但是有以下问题:
1. shuffle不会考虑到一个人买自己的礼物。(即:多维数组具有相同的值。例如:[15]=>Array([0]=>Ben[1]=>Ben)) 2. 如何为家庭成员制定例外规则?例如:Ben不能为Ellen、Dave和Chilli购买礼物等。
我已经尝试查看各种数组方法,但是没有更多答案。
我想到了这样的思路:
如果值相同,请重新洗牌并再次检查。 否则,继续下一个值并再次检查。
<?php
$peoplearray = Array("ben","peter","oscar","jake", "heidi", "Steve", "ed", "matt", "jordan", "gilly" , "Lea", "ellen", "dave", "chilli", "Sean", "Mark", "shane", "ali","dean");
shuffle($peoplearray);
$buying_for = array();
$k=0;
foreach($peoplearray as $value){
print "<BR>";
$buying_for[$k] = $value;
$k++;
}
$peoplearray = Array("ben","peter","oscar","jake", "heidi", "Steve", "ed", "matt", "jordan", "gilly" , "Lea", "ellen", "dave", "chilli", "Sean", "Mark", "shane", "ali","dean");
$total = count($peoplearray);
$result = array();
foreach ($peoplearray as $i => $val) {
$result[] = array($val, $buying_for[$i]);
}
for ($row = 1; $row < $total; $row++) {
echo "<p><b>Pair $row</b></p>";
echo "<ul>";
for ($col = 0; $col < 2; $col++) {
echo " ".$result[$row][$col]." ";
}
echo "</ul>";
}
?>