2013-09-26 9 views
0

Я пробовал это сейчас примерно по 20 различным способам, установил его и несколько раз поднял его, и я в недоумении за то, что делаю неправильно. Я пытаюсь создать массив массивов из трех отдельных массивов. Первый массив, через который я перебираю, - это список дат. Затем я перебираю список кабин (это простая программа планирования лагеря), а затем я произвольно назначаю действие каждой из кабин из третьего массива.Добавление значений в многомерный массив PHP

Три массивов $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 показывает, что у меня есть массив дат каждый из которых содержит массив имен кают с нулевыми значениями, с этой точкой I попробовали десяток вещей, и это именно то, где я его оставил, пытаясь устранить процесс, чтобы понять, что это не так.

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

В конце концов, я думал построить большой массив (с некоторыми дополнительными правилами еще не написаны, чтобы предотвратить несколько заданий одной и той же вещи и тому подобное. И тогда, как одна функция, я бы перебирать установленный комбинации в массиве, чтобы записать его в базу данных

Edit:. Запрос, как я хочу, чтобы она выглядела в конце:

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

в настоящее время у меня есть 2 из 3-х, но я не могу похоже на rando добавьте действия как ценности.

Edit: Это то, что @kunal «s предложение произведено:

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

Как именно вы хотите, чтобы последний массив выглядел? –

+0

Добавляем в качестве редактирования выше - здесь нет места. – red6

+0

Это может помочь вам визуализировать это, если вы бросите здесь пару классов, чтобы вы могли группировать не только данные (каюта -> дата -> активность), но также как * логика *. Выделите каждый объект его возможными вариантами, затем вы можете рандомизировать локально, а не пытаться делать все в одном огромном комка. Кроме того, было бы полезно, если бы вы могли показать определенный набор входных данных и некоторый пример вывода, который будет производить (в текущих примерах не отображается вход ...) – DaveRandom

ответ

2

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

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

EDIT: выше ответ неверен. Он присваивает одну и ту же активность каждой дате/кабине. Следующий ответ должен дать вам то, что вы ищете.

$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); 
+0

Я пробовал некоторые варианты этого (или несколько вариантов этого) - сообщение об ошибке «Предупреждение: нельзя использовать скалярное значение в виде массива» – red6

+1

@ red6 это должно работать, на какой строке он бросает эту ошибку?Если вы попытаетесь выполнить foreach на не-массиве, вы получите это, но поскольку у вас есть только три массива, все должно быть хорошо. –

+0

ОК, я, возможно, сохранил странную линию. Я перерисовываю его, а вместо ошибки просто добавляет дополнительную строку с одним ключом и пустым значением: http://pastie.org/8356193 – red6

Смежные вопросы