У меня есть двумерный массив, который содержит теги людей имя и языки . Цель состоит в том, чтобы сгруппировать все имена по языкам тегам
Вот пример такого массива:
[
['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 Исправлена опечатка в элементе.