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

PHP如何将多维关联数组按语言键重新分组?

PHP多维关联数组按语言维度重组

原数组结构

$array = [
    "name" => [
        "ro" => [
            0 => "Nume Romana",
        ],
        "en" => [
            0 => "Nume Engleza",
        ],
        "fr" => [
            0 => "Nume Franceza",
        ],
    ],
    "meta_keywords" => [
        "ro" => [
            0 => "keywords romana",
        ],
        "en" => [
            0 => "keywords Engleza",
        ],
        "fr" => [
            0 => "keywords Franceza",
        ],
    ],
    "meta_description" => [
        "ro" => [
            0 => "desciption romana",
        ],
        "en" => [
            0 => "desciption Engleza",
        ],
        "fr" => [
            0 => "desc Franceza",
        ],
    ],
];

目标数组结构

$result = [
    "ro" => [
        "name" => "Nume Romana",
        "meta_keywords" => "keywords romana",
        "meta_description" => "desciption romana",
    ],
    "en" => [
        "name" => "Nume Engleza",
        "meta_keywords" => "keywords Engleza",
        "meta_description" => "desciption Engleza",
    ],
];

实现代码

$result = [];

// 遍历原数组的每个字段(name、meta_keywords等)
foreach ($array as $field => $langValues) {
    // 遍历每个字段下的语言键值对
    foreach ($langValues as $lang => $valueArr) {
        // 取出语言数组的第一个元素,赋值到结果数组对应位置
        $result[$lang][$field] = $valueArr[0];
    }
}

// 若仅需保留ro和en,可过滤掉其他语言
$result = array_intersect_key($result, array_flip(['ro', 'en']));

代码说明

  1. 外层循环遍历原数组的顶级字段,获取每个字段下的多语言数据集合;
  2. 内层循环遍历每个字段下的语言标识,将对应语言的第一个值(原结构中每个语言对应索引0的数组)映射到结果数组的[语言标识][字段名]位置;
  3. 最后通过array_intersect_key可快速过滤出需要保留的语言项,比如示例中的fr可被剔除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 01:40:22