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

如何从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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:19:23