如何从PHP多维数组中检索指定键对应的子集?
嘿,我来帮你搞定这个superFind()函数!根据你的需求,我们需要在多维PHP数组里精准定位指定键对应的子集内容,直接上代码和详细说明:
实现步骤
1. 原始数组定义
先把你给出的数组明确下来:
$arr = [ 'target_a' => [], 'target_b' => [], 'target_c' => [ 'target_d' => [], 'target_e' => [ 'target_f' => [] ], ], 'target_g' => [], ];
2. superFind()函数实现
这里用递归的方式遍历数组的每一层,确保不管目标键在顶层还是嵌套层级都能被找到:
function superFind(string $target, array $array): array { // 先检查当前层级的键是否匹配 if (array_key_exists($target, $array)) { return [$target => $array[$target]]; } // 遍历当前数组的每个值,如果是数组就递归查找 foreach ($array as $value) { if (is_array($value)) { $result = superFind($target, $value); // 如果递归找到结果,直接返回 if (!empty($result)) { return $result; } } } // 没找到目标键时返回空数组(兜底处理) return []; }
3. 测试验证
现在来测试你给出的两个场景:
// 查找target_e,返回包含自身的子集 var_dump(superFind('target_e', $arr)); // 输出结果:array(1) { ["target_e"]=> array(1) { ["target_f"]=> array(0) { } } } // 查找target_a,返回包含自身的空数组 var_dump(superFind('target_a', $arr)); // 输出结果:array(1) { ["target_a"]=> array(0) { } }
如果只需要返回目标键对应的内容(不需要包含键名),只需要把匹配时的返回语句改成return $array[$target];就行,完全可以根据你的需求灵活调整~
内容的提问来源于stack exchange,提问作者Phoenix
相关产品推荐
相关产品推荐

