PHP中如何在多维数组中查找id_data值为O-1135的对应数据
方法1:嵌套遍历(兼容性最佳,所有PHP版本通用)
结构固定的场景下优先用这个方案,逻辑简单易懂,性能足够应对常规数据量:
// 假设你的原始数组变量名为 $originArr $targetId = 'O-1135'; $matchResult = null; foreach ($originArr as $outerItem) { // 校验data字段存在避免未定义报错 if (!isset($outerItem['data']) || !is_array($outerItem['data'])) { continue; } foreach ($outerItem['data'] as $dataItem) { if (isset($dataItem['id_data']) && $dataItem['id_data'] === $targetId) { $matchResult = $dataItem; // 匹配到直接跳出两层循环,无需继续遍历浪费性能 break 2; } } } // 输出匹配结果 var_dump($matchResult);
运行后得到的匹配数据为:
array(2) { ["id_data"]=> string(6) "O-1135" ["name_data"]=> string(15) "data 1 warga 2" }
方法2:递归遍历(适合数组层级不固定的场景)
如果后续数组结构可能调整、层级不固定,可以用递归方案,不需要提前明确数组结构:
$targetId = 'O-1135'; $matchResult = null; function searchById($arr, $targetId, &$matchResult) { foreach ($arr as $item) { if (is_array($item)) { if (isset($item['id_data']) && $item['id_data'] === $targetId) { $matchResult = $item; return; } searchById($item, $targetId, $matchResult); if ($matchResult !== null) { return; } } } } searchById($originArr, $targetId, $matchResult); var_dump($matchResult);
内容的提问来源于stack exchange,提问作者ihsan karunia
相关产品推荐
相关产品推荐

