В PHP Я * oop через результаты из базы данных, и я хочу сгруппировать результаты в разделы, поэтому у меня есть следующий код ...
$query = $db->prepare('select groupid, myval1, myval2 from mytable');
$query->execute();
$query->bind_result($groupid, $myval1, $myval2);
$groups = [];
$currentgroup = null;
while ($query->fetch()) {
if ($currentgroup == null || $currentgroup["groupid"] != $groupid) {
$currentgroup = ["groupid" => $groupid, "values" => []];
$groups[] = $currentgroup;
}
$currentgroup["values"][] = ["myval1" => $myval1, "myval2" => $myval2];
}
$query->close();
Это результаты в массиве $groups
, содержащем отдельный элемент для каждой указанной группы c, но массив values
остается пустым ...
$groups = [
["groupid" = 1, "values" = []],
["groupid" = 2, "values" = []],
["groupid" = 3, "values" = []]
]
Когда я отлаживаю через l oop, я могу обратите внимание, что $currentgroup["values"]
заполнен правильно, но, похоже, что даже если $currentgroup
был добавлен к $groups
, значения не заполняются. Это говорит о том, что используются разные массивы, но я не вижу, как это исправить ... Я думаю, ссылки необходимы, но я изо всех сил пытаюсь понять, как.
Как мне исправить приведенный выше код приводит к ...
$groups = [
["groupid" = 1, "values" = [
["myval1" = 1, "myval2" = 2],
["myval1" = 3, "myval2" = 4]
],
["groupid" = 2, "values" = [
["myval1" = 5, "myval2" = 6],
["myval1" = 7, "myval2" = 8],
["myval1" = 9, "myval2" = 10]
],
["groupid" = 3, "values" = []]
]