循环mysqli查询结果时,如何将关联元素合并至每行数据中
实现方法
你可以通过数组合并的方式,将查询结果行$row与计算出的额外数据$formula合并为单个数组,直接存入$containers即可得到目标结构。
修改后的代码:
while ($row = $table->fetch_array()) { $formula = [ 'tkoSum' => $this->getTkoSum($row['id']), 'chko' => $this->getChko($row['id']) ]; // 合并$row和$formula为平级数组,添加到容器中 $containers[] = array_merge($row, $formula); }
另一种更直观的写法:
如果不想额外创建$formula变量,也可以直接把计算结果追加到原行数据里:
while ($row = $table->fetch_array()) { $row['tkoSum'] = $this->getTkoSum($row['id']); $row['chko'] = $this->getChko($row['id']); $containers[] = $row; }
修改后$containers的结构:
[ 0 => [ 'id' => 1, 'category' => 'МКД', 'tkoSum' => '12', 'chko' => '15' ], 1 => [ 'id' => 2, 'category' => 'Офис', 'tkoSum' => '62', 'chko' => '45' ] ];
原理说明:array_merge()会将两个数组的键值对合并为一个数组,由于$row和$formula的键名无重复,所有字段会平级保留;直接修改$row的方式则更简洁,直接给原数组添加新键值对,最终存入容器的就是包含所有字段的单行数据。
内容的提问来源于stack exchange,提问作者Глеб Цибизов
相关产品推荐
相关产品推荐

