Я пытаюсь создать многомерный массив, подобный этому в PHP:
$books = array( "8" => array( "my girl" => 2.5, "the god delusion" => 3.5, "tweak" => 3, "the shack" => 4, "the birds in my life" => 2.5, "new moon" => 3.5), "14" => array( "the last lecture" => 2.5, "the god delusion" => 3.5, "the noble wilds" => 3, "the shack" => 3.5, "the birds in my life" => 2.5, "new moon" => 1) );
из таблицы базы данных, которая выглядит следующим образом:
ID value title ------------------------------------------------------------------ 8 5 Clara Callan 8 5 Where You'll Find Me: And Other Stories 8 5 The Middle Stories 8 5 Jane Doe 8 6 The Witchfinder (Amos Walker Mystery Series) 8 6 More Cunning Than Man: A Social History of Rats an... 8 7 Goodbye to the Buttermilk Sky 9 6 Beloved (Plume Contemporary Fiction) 12 10 If I'd Known Then What I Know Now: Why Not Learn f... 14 5 Mary-Kate & Ashley Switching Goals (Mary-Kate ... 14 5 Tell Me This Isn't Happening 14 6 Flood : Mississippi 1927 16 9 Airframe 17 7 Death in the Clouds 17 5 Bant/Spec.Last of the Breed 17 6 Piercing the Darkness 17 3 Prophet 19 7 Prague : A Novel
Я уже пробовал несколько способов, но я до сих пор не могу понять, как это сделать. Я искал множество потоков здесь, но до сих пор никто не обсуждает об этом. Я новичок в PHP, поэтому я не понимаю слишком много концепции массива в PHP. В настоящее время мой PHP-код выглядит так:
$result = mysql_query($mySelectQuery) or die("<br/><br/>".mysql_error()); $books = array(); while ($row = mysql_fetch_array($result)) { $userID = $row{'User-ID'}; $books[$userID] = array($row{'Book-Title'} => $row{'Book-Rating'},); }
Этот код уже дает аналогичный результат с «тем, что я хочу», но он по-прежнему заменяет существующие книжные записи, поэтому в конце каждый пользователь имеет только одну книжную запись в своем массиве. Мой вопрос:
Как я могу заполнить многомерный массив, отформатированный как мой, с результатом моего запроса?
Спасибо за миллион за ваши ответы. И извините за плохой английский.
Пытаться:
$result = mysql_query($mySelectQuery) or die("<br/><br/>".mysql_error()); $books = array(); while ($row = mysql_fetch_array($result)) { $userID = $row{'User-ID'}; $books[$userID][$row{'Book-Title'}] = $row{'Book-Rating'}; }
Это присвоит название вашей книги как массив / индекс массива и задает рейтинг как его значение.
Перед циклом добавьте:
$books[$userID] = array();
Внутри цикла используйте:
$books[$userID][] = array($row{'Book-Title'} => $row{'Book-Rating'},);
Попробуйте следующее:
$books[$userID][] = array($row{'Book-Title'} => $row{'Book-Rating'},);