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