0

私はこれを約 20 の異なる方法で試しましたが、何度か設定して元に戻しましたが、自分が間違っていることに途方に暮れています。3 つの個別の配列から配列の配列を作成しようとしています。繰り返し処理する最初の配列は、日付のリストです。次に、キャビンのリストを反復処理し (これは単純なキャンプ スケジューリング プログラムです)、3 番目の配列から各キャビンにアクティビティをランダムに割り当てます。

3 つの配列は$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 は、null 値を持つキャビン名の配列を含む日付の配列があることを示しています。そうでないものを出します。

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

結局、私は大きな配列を構築することを考えていました(同じものの複数の割り当てなどを防ぐために、いくつかの追加ルールはまだ書き込まれていません。そして、1つの関数として、配列内の確立された組み合わせを反復して書き込みますデータベースに。

編集:最終的にどのように見せたいかについてのリクエスト:

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

アクティビティを 1 回繰り返すと、それ以外に値が割り当てられることはありませんでした。

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 に答える