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
相关产品推荐
相关产品推荐

