Какой самый элегантный способ написать функцию PHP
(не знаю, есть ли какая-либо встроенная функция, которая помогает в этом) со следующей подписью:
function group_arr($arr, ...$keys)
{
$result = $arr;
// ...
return $result;
};
Итак, когда я передаю следующий массив:
$arr_src = [
[ 'Country' => 'USA', 'State' => 'Florida', 'City' => 'Miami', 'Population' => 2744878, 'AreaSquareMile' => 55.25 ],
[ 'Country' => 'USA', 'State' => 'Florida', 'City' => 'Tampa', 'Population' => 4300000, 'AreaSquareMile' => 175.2 ],
[ 'Country' => 'USA', 'State' => 'Florida', 'City' => 'Orlando', 'Population' => 1923000, 'AreaSquareMile' => 113.7 ],
[ 'Country' => 'USA', 'State' => 'California', 'City' => 'Los Angeles', 'Population' => 13100000, 'AreaSquareMile' => 503.0 ],
[ 'Country' => 'USA', 'State' => 'California', 'City' => 'San Diego', 'Population' => 3231000, 'AreaSquareMile' => 372.4 ],
[ 'Country' => 'Canada', 'State' => 'Ontario', 'City' => 'Toronto', 'Population' => 6139000, 'AreaSquareMile' => 243.3 ],
[ 'Country' => 'Canada', 'State' => 'Quebec', 'City' => 'Montreal', 'Population' => 4196000, 'AreaSquareMile' => 166.6 ],
[ 'Country' => 'Canada', 'State' => 'Quebec', 'City' => 'Sherbrooke', 'Population' => 161323, 'AreaSquareMile' => 141.7 ],
];
как здесь:
$arr_dst = group_arr($arr_src, 'Country', 'State', 'City');
я получаю следующий результат:
$arr_dst = [
'USA' => [
'Florida' => [
'Miami' => [
'Population' => 2744878,
'AreaSquareMile' => 55.25,
],
'Tampa' => [
'Population' => 4300000,
'AreaSquareMile' => 175.2,
],
'Orlando' => [
'Population' => 1923000,
'AreaSquareMile' => 113.,
],
],
'California' => [
'Los Angeles' => [
'Population' => 13100000,
'AreaSquareMile' => 503.0,
],
],
'California' => [
'San Diego' => [
'Population' => 3231000,
'AreaSquareMile' => 372.4,
],
],
],
'Canada' => [
'Ontario' => [
'Toronto' => [
'Population' => 6139000,
'AreaSquareMile' => 243.3,
],
],
'Quebec' => [
'Montreal' => [
'Population' => 4196000,
'AreaSquareMile' => 166.6,
],
'Sherbrooke' => [
'Population' => 161323,
'AreaSquareMile' => 141.7,
],
],
],
];
Любая идея о как этого добиться?
Спасибо!