如何转换MySQL查询返回的数组结构?技术求助
解决MySQL查询结果数组结构转换问题
嘿,我看了你的代码和需求,其实问题出在你当前构建数组的方式上——你现在是把每个字段的所有值单独收集成数组,最后再按字段合并,这就导致了按字段分组的结构。要转换成按行分组的形式,只需要调整循环里的数组构建逻辑就行:
修改后的代码
<?php $table_content = []; // 初始化空数组,用来存按行分组的数据 if ($result->num_rows > 0) { // 遍历每一行查询结果 while($row = $result->fetch_assoc()) { // 把当前行的ITEM和REFERENCE打包成一个关联数组,加入结果数组 $table_content[] = [ 'ITEM' => $row["item"], 'REFERENCE' => $row["reference"] ]; } } // 输出查看结果 echo '<pre>'; print_r($table_content); echo '</pre>'; ?>
为什么这样改?
- 原来的代码是把所有
item值塞进$item_array,所有reference值塞进$reference_array,最后合并成['ITEM' => [...], 'REFERENCE' => [...]]的结构。 - 修改后,我们每次循环都把单一行的
ITEM和REFERENCE组合成一个小关联数组,然后把这个小数组追加到$table_content里,最终就得到了你想要的[0 => [...], 1 => [...]]按行分组的结构。
如果你的查询结果里还有其他字段需要保留,也可以直接把整行数据加进去,比如$table_content[] = $row;,这样每个元素就是包含所有字段的关联数组啦~
内容的提问来源于stack exchange,提问作者Arief Kurniawan
相关产品推荐
相关产品推荐

