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

如何在多维数组中按指定键提取子数组并保留结构?

从多维数组中按指定键提取子数组并保留原结构

刚好之前我也碰到过一模一样的需求——要从嵌套的多维数组里精准捞取指定键的内容,还得死死保住原有的层级结构,给你分享下我验证过的靠谱实现:

首先是核心的递归处理函数,它会一层层遍历数组,遇到子数组就深入处理,找到目标键就留下,空的分支会自动过滤掉:

function extractKeyFromMultiArray($multiArray, $targetKey) {
    $result = [];
    foreach ($multiArray as $key => $value) {
        if (is_array($value)) {
            // 递归处理嵌套的子数组
            $extracted = extractKeyFromMultiArray($value, $targetKey);
            // 只有子数组提取到有效内容时,才保留原层级
            if (!empty($extracted)) {
                $result[$key] = $extracted;
            }
        } elseif ($key === $targetKey) {
            // 匹配到目标键,把键值对加入结果集
            $result[$key] = $value;
        }
    }
    return $result;
}

使用示例

假设你的多维数组是这样的(模拟真实场景的示例):

$multi_array = [
    'productGroup' => [
        'optionSelected' => 'Electronics',
        'description' => 'Tech Products',
        'subCategory' => [
            'optionSelected' => 'Smartphones',
            'priceRange' => '2000-8000'
        ]
    ],
    'anotherGroup' => [
        'tag' => 'Daily Goods',
        'emptySub' => []
    ]
];

调用函数提取optionSelected键的内容:

$array_key = 'optionSelected';
$extractedResult = extractKeyFromMultiArray($multi_array, $array_key);

// 打印结果
print_r($extractedResult);

输出的结果会完美保留原有的层级结构,只包含目标键的内容:

Array
(
    [productGroup] => Array
        (
            [optionSelected] => Electronics
            [subCategory] => Array
                (
                    [optionSelected] => Smartphones
                )
        )
)

这个函数的优势

  • 支持任意深度的多维数组嵌套,不管你的数组有多少层嵌套都能处理
  • 严格保留原数组的层级关系,不会打乱原本的结构逻辑
  • 自动过滤没有目标键的空分支,避免结果里出现无用的空数组节点

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:15:58