簡體   English   中英

將值添加到多維數組PHP

[英]Adding values to a multidimensional array PHP

我現在已經嘗試了大約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

一旦它迭代了一次活動,就沒有其他任何東西被分配一個值。

 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM