PHP如何在ID匹配时用另一个数组内容填充目标数组对应字段
实现方案
你可以先将用于填充的数组按id分组,再遍历目标数组完成填充,逻辑清晰且执行效率更高,完整代码如下:
// 你原有生成两个数组的代码 foreach ($query2 as $key2) { $result2[] = $key2; } foreach ($query as $value) { array_push($result , array( "id" => $value['id'], "name" => $value['name'], "msgSinLeer" => $value['msgSinleer'], "subject" => array(), )); } // 新增的填充逻辑 // 1. 把填充数据源按id分组,相同id的内容归类到一起 $groupedFillData = []; foreach ($result2 as $fillItem) { $groupedFillData[$fillItem['id']][] = $fillItem; } // 2. 遍历目标数组,为subject字段赋值 foreach ($result as &$userInfo) { $currentId = $userInfo['id']; if (isset($groupedFillData[$currentId])) { $userInfo['subject'] = $groupedFillData[$currentId]; } } // 解除引用,避免后续操作变量时出现异常 unset($userInfo); // 输出最终结果 print_r($result);
注意事项
- 注意字段名大小写问题,你原有代码里出现过
msgSinleer和msgSinLeer两种写法,要和你实际数据库/数据源的字段名保持一致,否则会出现取值为空的问题。 - 使用引用
&遍历数组后一定要执行unset操作,否则后续修改$userInfo变量时会意外修改$result数组的最后一条元素。
内容的提问来源于stack exchange,提问作者Alexis Murillo
相关产品推荐
相关产品推荐

