У меня есть база данных со следующей информацией:
| 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
но не могу понять, как
Как насчет:
while ($array = $query_res->fetch_assoc()) {
$final_array[$array['Number']][] = $array['Name'];
}
Если $ array действительно массив, он содержит ключи ID, Number и Name
$final_array = array();
while ($array = $query_res->fetch_assoc()) {
$final_array[$array['Number']][] = array ($array['Name']);
}
а затем print_r ….
Измените ваш запрос на
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);
Вам нужно проверить, существует ли элемент с ключом, если да, вставить новое значение в массив, если не создать новый массив:
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);