Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
向多维数组PHP添加值_Php - Fatal编程技术网

向多维数组PHP添加值

向多维数组PHP添加值,php,Php,我现在已经尝试了20种不同的方法,把它放下来,然后把它捡起来好几次,我对自己做错的事情感到不知所措。我正在尝试从三个单独的数组创建一个数组数组。我遍历的第一个数组是日期列表。然后我遍历一个小屋列表(这是一个简单的营地调度程序),然后从第三个数组中随机分配一个活动给每个小屋 这三个数组是$cabins,$activities,和$checkeddates //swaps key-value so cabin names are keys $cabins = array_flip( $cabins

我现在已经尝试了20种不同的方法,把它放下来,然后把它捡起来好几次,我对自己做错的事情感到不知所措。我正在尝试从三个单独的数组创建一个数组数组。我遍历的第一个数组是日期列表。然后我遍历一个小屋列表(这是一个简单的营地调度程序),然后从第三个数组中随机分配一个活动给每个小屋

这三个数组是
$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);