You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 14:45:03