PHP按Cat_name分组输出仅显示单个对象,如何调整代码获取多个对象
PHP按Cat_name分类数组对象的修复方案
问题原因
- 循环变量命名冲突:原代码写的
foreach($row as $row)会在遍历过程中直接覆盖原数组变量,导致数据丢失 - 重复重置分类容器:每次循环都执行
$output[$keys] = [],会清空对应分类下之前已经存入的对象,最终每个分类仅保留最后一次推入的单个对象
修正后代码
// 先初始化结果容器 $output = []; // 遍历原数组,注意不要重名覆盖原数组变量 foreach($original_rows as $row){ $key = $row['Cat_name']; // 仅当分类不存在时才初始化空数组,避免覆盖已有内容 if(!isset($output[$key])){ $output[$key] = []; } array_push($output[$key], $row); } echo json_encode($output);
代码说明
- 先全局初始化
$output作为最终输出的容器 - 代码里的
$original_rows需要替换成你自己实际的数据源数组名,避免和单条记录的$row重名冲突 - 新增
isset判断,只有对应分类还没创建的时候才初始化空数组,已有分类直接往里面追加对象即可
内容的提问来源于stack exchange,提问作者Dev 21
相关产品推荐
相关产品推荐

