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

如何从多维数组生成键唯一的键值对数组

如何从多维数组中提取所有唯一键的键值对?

嘿,这事儿不难搞定!你要的就是把嵌套的多维数组“扁平化”,只保留最底层的键值对,还得保证所有键都是唯一的。先把你的需求再明确下:

输入示例:

$inputArray = [
    'fruit' => [
        'apple' => 'red',
        'banana' => 'Yellow'
    ],
    'flower' => [
        'rose' => 'red'
    ]
];

期望输出:

[
    'apple' => 'red',
    'banana' => 'Yellow',
    'rose' => 'red'
]

接下来给你个通用的解决方案,用递归函数就能处理任意深度的嵌套数组:

function flattenUniqueArray($array) {
    $result = [];
    foreach ($array as $key => $value) {
        // 如果当前元素还是数组,就递归处理
        if (is_array($value)) {
            $result = array_merge($result, flattenUniqueArray($value));
        } else {
            // 直接把键值对加入结果,重复的键会自动覆盖前面的(保证唯一)
            $result[$key] = $value;
        }
    }
    return $result;
}

// 调用示例
$flattenedArray = flattenUniqueArray($inputArray);
print_r($flattenedArray);

代码逻辑说明:

  • 递归遍历数组的每一个元素:如果遇到嵌套数组,就继续深入处理;如果是普通的键值对,就直接加入结果数组。
  • 用array_merge把递归返回的扁平化数组合并到结果里,当键重复时,后面的键值会覆盖前面的,刚好满足“所有键唯一”的要求。

如果你的需求里,遇到重复键时不想覆盖,而是跳过新的键值,可以把$result[$key] = $value;改成下面这样:

if (!isset($result[$key])) {
    $result[$key] = $value;
}

这样就只会保留第一个出现的键值对啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:16:24