PHP многомерный массив, каждое число как массив в массиве

У меня есть база данных со следующей информацией:

    | ID | Name | Number |
+----+------+--------+
| 1  |  aaa |   1    |
| 2  |  bbb |   1    |
| 3  |  ccc |   2    |
| 4  |  ddd |   2    |

и так далее…..

То, что я хочу, это сделать массив следующим образом:

    $array[1] = array ('aaa','bbb');
$array[2] = array ('ccc','ddd');

И так далее……

Как мне добиться этого с помощью петли?

Это то, что я получил так далеко:

while ($array = $query_res->fetch_assoc()) {
$final_array[$array['Number']] = array ($array['Name']);
}
print_r($final_array);

Это не работает Я думаю, что я должен использовать array_merge но не могу понять, как

2

Решение

Как насчет:

while ($array = $query_res->fetch_assoc()) {
$final_array[$array['Number']][] = $array['Name'];
}
3

Другие решения

Если $ array действительно массив, он содержит ключи ID, Number и Name

   $final_array = array();
while ($array = $query_res->fetch_assoc()) {
$final_array[$array['Number']][] = array ($array['Name']);
}

а затем print_r ….

1

Измените ваш запрос на

SELECT `Number`, GROUP_CONCAT(DISTINCT(`Name`)) as `Name` FROM `table`

Вы получите ответ как:

Число = 1, Имя = ААА, BBB
Число = 2, имя = ccc, ddd

Тогда сделай что-нибудь вроде

while ($array = $query_res->fetch_assoc()) {
$final_array[$array['Number']] = explode(',' $array['Name']);
}
print_r($final_array);
0

Вам нужно проверить, существует ли элемент с ключом, если да, вставить новое значение в массив, если не создать новый массив:

while ($array = $query_res->fetch_assoc()) {
if(isset($final_array[$array['Number']]){
$final_array[$array['Number']][] = $array['Name'];
}else{
$final_array[$array['Number']] = array ($array['Name']);
}
}
print_r($final_array);
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector