Php 添加到阵列中的阵列(构建数据组)
在PHP中,我将循环数据库中的结果,并将结果分组到各个部分,因此我有以下代码Php 添加到阵列中的阵列(构建数据组),php,arrays,reference,Php,Arrays,Reference,在PHP中,我将循环数据库中的结果,并将结果分组到各个部分,因此我有以下代码 $query = $db->prepare('select groupid, myval1, myval2 from mytable'); $query->execute(); $query->bind_result($groupid, $myval1, $myval2); $groups = []; $currentgroup = null; while ($query->fetch()) {
$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
数组包含每个特定组的单个项,但value
数组仍然为空
$groups = [
["groupid" = 1, "values" = []],
["groupid" = 2, "values" = []],
["groupid" = 3, "values" = []]
]
当我调试循环时,我可以看到$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" = []]
]
如果通过
groupid
为$groups
数组编制了索引,则可以使用该索引将值添加到正确的分组中。所以在你的循环里变成
if ( !isset($groups[$groupid]) ) {
$groups[$groupid] = ["groupid" => $groupid, "values" => []];
}
$groups[$groupid]["values"][] = ["myval1" => $myval1, "myval2" => $myval2];
您可能希望在末尾删除这些组号,只需使用array\u values()
即可
$groups = array_values($groups);
如果通过
groupid
为$groups
数组编制了索引,则可以使用该索引将值添加到正确的分组中。所以在你的循环里变成
if ( !isset($groups[$groupid]) ) {
$groups[$groupid] = ["groupid" => $groupid, "values" => []];
}
$groups[$groupid]["values"][] = ["myval1" => $myval1, "myval2" => $myval2];
您可能希望在末尾删除这些组号,只需使用array\u values()
即可
$groups = array_values($groups);
写了同样的东西。你不是提前一周吗?!把复活节彩蛋的对话放在一边(是的,你提前了一周!);-)太好了。我专注于不必在循环的每次迭代中查找组,但这非常有意义。谢谢:-)我写的都是一样的东西。你不是提前一周吗?!把复活节彩蛋的对话放在一边(是的,你提前了一周!);-)太好了。我专注于不必在循环的每次迭代中查找组,但这非常有意义。谢谢:-)