PHP。如何在多维数组中按标记对值进行分组?

PHP。如何在多维数组中按标记对值进行分组?,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有一个二维数组,其中包含人物姓名和语言标记。 目标是按语言标记对所有名称进行分组 以下是此类阵列的一个示例: [ ['name' => 'Ann', 'languages' => ['EN', 'FR']], ['name' => 'Bill', 'languages' => ['ES', 'CN']], ['name' => 'Jake', 'languages' => ['ES', 'FR']], ] 应将其转化为: [ 'EN' =>

我有一个二维数组,其中包含人物姓名语言标记。 目标是按语言标记对所有名称进行分组

以下是此类阵列的一个示例:

[
 ['name' => 'Ann', 'languages' => ['EN', 'FR']],
 ['name' => 'Bill', 'languages' => ['ES', 'CN']],
 ['name' => 'Jake', 'languages' => ['ES', 'FR']],
]
应将其转化为:

[
 'EN' => ['Ann'],
 'FR' => ['Ann', 'Jake'],
 'ES' => ['Bill', 'Jake'],
 'CN' => ['Bill']
]
这是我按语言分组的代码。 第一个问题是它添加了密钥id。 第二,我不确定php中是否有更适合使用的数组函数

function groupByLang(array $array) {
    $result = [];
    foreach ($array as $person) {
        foreach ($person['languages'] as $lang) {
            $result[$lang][] = $person['name'];
        }
    }
    return $result;
}
结果如下

[
 'EN' => [0 => 'Ann'],
 'FR' => [0 => 'Ann', 1 => 'Jake'],
 'ES' => [0 => 'Bill', 1 => 'Jake'],
 'CN' => [0 => 'Bill']
]
有人能帮我修改代码吗?提前谢谢

UPD 我想我的代码正在正常工作。但是我对这个指数感到困惑。。。 UPD 2
项目输入错误已修复。

您的代码或结果没有问题。PHP中的数组总是有一个与之关联的键。由于您没有指定键,它将返回到默认索引(0、1、2…。

是的,您是对的!顺便问一下,我能用一些内置函数重写我的代码吗?不,你的代码是正确的,清晰的。不需要改变它。如果答案正确,请将其标记为已接受。