0

我现在已经尝试了大约 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_dump 显示我有一个日期数组,每个日期都包含一个带有空值的小屋名称数组,从这一点开始我已经尝试了十几件事,这就是我离开它的地方,尝试一个消除过程来计算找出它不是什么。

foreach ( $uberarray as $k => $v ) {
    shuffle( $activities );
    $s = $activities[0]; 
    $uberarray[] = $s;
}

最后,我正在考虑构建大数组(还没有写入一些额外的规则,以防止对同一事物进行多次分配等。然后作为一个函数,我将遍历数组中已建立的组合来编写它到数据库。

编辑:请求我希望它最终看起来如何:

array
  'ThuJan1st' =>
     array 
       'cabin 1' => randomactivity1
       'cabin 2' => randomactivity2
       'cabin 3' => randomactivity3

目前我有 3 个中的 2 个,但我似乎无法将活动随机添加为值。

编辑:这是@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

一旦它迭代了一次活动,就没有其他任何东西被赋值。

4

1 回答 1

2

foreach ($checkeddates as $date) {
    shuffle( $activities );

    foreach ($cabins as $cabin) {
        foreach ($activities as $activity) {
            $uberarray[$date][$cabin] = $activity;
        }
    }
}

编辑:上面的答案是不正确的。它将相同的活动分配给每个日期/客舱对。下面的答案应该给你你在找什么。

$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);
于 2013-09-26T03:19:38.830 回答