如何使用PHP将查询返回的JSON数组键名替换为对应记录的id值
你原有代码的问题是修改了数组元素的值而非数组键,无法实现将默认数字索引替换为对应id值的需求,两种实现方案如下:
方案1:foreach遍历实现(兼容所有PHP版本)
$result = $db->run("SELECT * FROM.....")->fetchAll(); $newResult = []; foreach ($result as $item) { $newResult[$item['id']] = $item; } // 后续直接使用$newResult即可
遍历原查询结果集,以每条数据的id字段作为新数组的键,完整的原始数据作为值存入新数组即可得到你需要的结构。
方案2:array_column 内置函数实现(PHP 5.5及以上版本支持,代码更简洁)
$result = $db->run("SELECT * FROM.....")->fetchAll(); $newResult = array_column($result, null, 'id');
array_column 第二个参数传入null表示保留完整的子数组内容,第三个参数传入id表示将每条数据的id字段作为新数组的键,一行代码即可完成转换。
注意:如果查询结果中存在id相同的记录,后出现的记录会覆盖先出现的记录,这是PHP数组键唯一性的正常逻辑。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

