向多维数组PHP添加值
我现在已经尝试了20种不同的方法,把它放下来,然后把它捡起来好几次,我对自己做错的事情感到不知所措。我正在尝试从三个单独的数组创建一个数组数组。我遍历的第一个数组是日期列表。然后我遍历一个小屋列表(这是一个简单的营地调度程序),然后从第三个数组中随机分配一个活动给每个小屋 这三个数组是向多维数组PHP添加值,php,Php,我现在已经尝试了20种不同的方法,把它放下来,然后把它捡起来好几次,我对自己做错的事情感到不知所措。我正在尝试从三个单独的数组创建一个数组数组。我遍历的第一个数组是日期列表。然后我遍历一个小屋列表(这是一个简单的营地调度程序),然后从第三个数组中随机分配一个活动给每个小屋 这三个数组是$cabins,$activities,和$checkeddates //swaps key-value so cabin names are keys $cabins = array_flip( $cabins
$cabins
,$activities
,和$checkeddates
//swaps key-value so cabin names are keys
$cabins = array_flip( $cabins );
//sets each key value pair to be cabinname=> null
erase_val( $cabins );
foreach ( $checkeddates as $dates ) {
$uberarray[] = $dates;
}
$uberarray = array_flip( $uberarray );
foreach ( $uberarray as $k => $v ) {
$uberarray[$k] = $cabins;
}
在这一点上,var_转储显示我有一个日期数组,每个日期都包含一个带有空值的小屋名称数组,从这一点上,我尝试了十几种方法,这就是我留下它的地方,尝试一个消除过程来找出它不是什么
foreach ( $uberarray as $k => $v ) {
shuffle( $activities );
$s = $activities[0];
$uberarray[] = $s;
}
最后,我考虑构建一个大型数组(还有一些尚未写入的附加规则,以防止对同一事物进行多次赋值),然后作为一个函数,我将遍历数组中已建立的组合,将其写入数据库
编辑:询问我希望它最终的外观:
array
'ThuJan1st' =>
array
'cabin 1' => randomactivity1
'cabin 2' => randomactivity2
'cabin 3' => randomactivity3
目前我有三分之二,但我似乎不能随机添加活动作为值
编辑:这是@kunal的建议产生的结果:
array
'ThuJan1st' =>
array
'cabin 1' => randomactivity1
'cabin 2' => randomactivity2
'cabin 3' => randomactivity3
array
'FriJan2nd' =>
array
'cabin 1' => randomactivity4
'cabin 2' => Null
'cabin 3' => Null
一旦它在活动中迭代了一次,就不会给其他任何东西赋值。
编辑:上面的答案不正确。它将相同的活动分配给每个日期/舱位对。下面的答案应该给出您要查找的内容。
$checkeddates = array('ThuJan1st');
$cabins = array('cabin 1','cabin 2','cabin 3');
foreach ($checkeddates as $date) {
$activities = array('randomactvitiy1','randomactivity2','randomactivity3');
shuffle( $activities );
foreach ($cabins as $cabin) {
$uberarray[$date][$cabin] = array_pop($activities);
}
}
var_dump($uberarray);
您希望最终数组的外观如何?将添加为上面的编辑-下面没有空间。如果您在此处添加两个类,它可能会帮助您将其可视化,这样您不仅可以像数据一样分组(CAB->date->ACTIVE)但也像逻辑一样。将每个对象分配其可能的变量,然后你可以局部随机化,而不是试图在一个巨大的块中完成所有事情。此外,如果你可以显示一组确定的输入数据和一些可能产生的示例输出(你当前的示例不显示输入…),这将非常有用我对下面的一条评论作了这样的回复:我不知道输出的详细程度,我已经显示了所需的var_转储结果和实际的var_转储结果。还有什么可以帮助的吗?我尝试了一些变化(或一些变化)-错误消息“警告:无法将标量值用作数组”@red6这应该可以,它在哪一行抛出错误?如果你尝试在非数组上执行foreach,你会得到它,但是因为你只有三个数组,所以应该可以。好的,我可能在那里保留了一行奇怪的行。我重新运行它,而不是错误,它只是添加了一个额外的行,带有一个键和一个空值:你的3数组是什么我只是保留了一些简单的、较短的版本,直到我把它们组合起来。
$checkeddates = array('ThuJan1st');
$cabins = array('cabin 1','cabin 2','cabin 3');
foreach ($checkeddates as $date) {
$activities = array('randomactvitiy1','randomactivity2','randomactivity3');
shuffle( $activities );
foreach ($cabins as $cabin) {
$uberarray[$date][$cabin] = array_pop($activities);
}
}
var_dump($uberarray);