Как объединить элементы массива с общим ключем?
Реализуйте функцию, которая:
Принимает ассоциативный массив, содержащий имя владельца файла для каждого имени файла. Возвращает ассоциативный массив, содержащий массив имен файлов для каждого имени владельца в любом порядке. Например, для ассоциативного массива ["Input.txt" => "Randy", "Code.py" => "Stan", "Output.txt" => "Randy"] функция groupByOwners должна вернуть ["Randy" = > ["Input.txt", "Output.txt"], "Stan" => ["Code.py"]]. Всю голову сломал, не могу понять элементарную вещь, как объединить два элемента массива с общим ключем
Ответы (2 шт):
Автор решения: splash58
→ Ссылка
вот так можно объединить
$res = [];
foreach($arr as $k=>$v) {
$res[$v][] = $k;
}
Автор решения: DiD
→ Ссылка
так чтоли?
<?
$array = [
'key1' => 'val1',
'key2' => 'val1',
'key3' => 'val2',
'key4' => 'val2',
'key5' => 'val3',
];
$res = array_merge_recursive(...array_map(fn($key,$val)=>[$val=>$key],array_keys($array),$array));
print_r($res);
/** Вывод:
Array
(
[val1] => Array
(
[0] => key1
[1] => key2
)
[val2] => Array
(
[0] => key3
[1] => key4
)
[val3] => key5
)
*/