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

PHP多维关联数组:按索引提取指定位置的所有result值

解决PHP多维关联数组提取所有'result'值的问题

嘿,你已经搞定了最核心的定位步骤,剩下的就是从目标节点里把所有result对应的值捞出来啦!这里给你一个简单有效的递归方案,完美适配这种层级不确定的多维数组:

步骤1:编写递归提取函数

这个函数会遍历目标节点下的所有子数组,只要遇到带有result键的元素,就把对应的值收集起来:

function extractAllResults($targetArray) {
    $results = [];
    
    foreach ($targetArray as $item) {
        // 先判断当前元素是不是数组
        if (is_array($item)) {
            // 如果存在'result'键,直接加入结果列表
            if (isset($item['result'])) {
                $results[] = $item['result'];
            } else {
                // 没有的话就递归遍历子数组,把结果合并进来
                $results = array_merge($results, extractAllResults($item));
            }
        }
    }
    
    return $results;
}

步骤2:结合你的定位代码使用

把你已经写好的定位逻辑和这个函数结合起来,就能得到想要的结果:

// 假设你的原始多维数组是$result
$result = [
    'A' => [
        'D' => [
            'A' => [
                'M' => ['result' => 'ADAM'],
                'N' => ['result' => 'ADAN']
            ]
        ]
    ],
    'H' => [
        'E' => [
            'N' => [
                'R' => ['Y' => ['result' => 'HENRY']],
                'N' => ['E' => ['S' => ['result' => 'HENNES']]]
            ]
        ]
    ]
];

// 你的搜索字符串
$searchstring = 'ADA';
$check = str_split($searchstring);

// 定位到目标节点
$finalsearch = $result;
foreach($check as $key) {
    $finalsearch = $finalsearch[$key];
}

// 提取所有result值
$output = extractAllResults($finalsearch);
print_r($output);

测试效果

  • 当$searchstring = 'ADA'时,输出:Array ( [0] => ADAM [1] => ADAN )
  • 当$searchstring = 'ADAM'时,定位到的节点就是['result' => 'ADAM'],函数会直接提取这个值,输出:Array ( [0] => ADAM )

这个方法的好处是不管目标节点下的层级有多深,都能把所有result值找出来,完全适配你的数组结构~

内容的提问来源于stack exchange,提问作者Warden330

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 21:07:35