Я не могу правильно сформулировать эту проблему, поэтому вот чего я пытаюсь достичь.
array {
[0]=> {
["Abilities"]=> { ["Numerical"]=> 3 }
}
[1]=> {
["Abilities"]=> { ["Verbal"]=> 1 }
}
[2]=> {
["Domain"]=> { ["Programming"]=> 0 }
}
}
к
array {
[0]=> {
["Abilities"]=> { ["Numerical"]=> 3 ["Verbal"]=> 1 }
}
[1]=> {
["Domain"]=> { ["Programming"]=> 0 }
}
}
Я получаю этот массив из внешнего источника, поэтому мне нужно оптимизировать этот способ для его использования.
Вам помог мой пост?
Массив, который вы получаете из внешнего источника, подобен набору отдельных ветвей, которые нужно объединить в единое дерево. Вы можете использовать рекурсивную функцию для создания «оптимизированной» структуры, которую вы собираетесь использовать. Рекурсивный подход должен работать независимо от глубины каждой ветви.
function merge_branches(array $branches): array
{
$merge = function ($node, &$tree) use (&$merge) {
if (is_array($value = reset($node))) {
$merge($value, $tree[key($node)]); // merge branch node recursively
} else {
$tree[key($node)] = $value; // set leaf node to value
}
};
$tree = [];
foreach ($branches as $branch) {
$merge($branch, $tree);
}
return $tree;
}
$optimized = merge_branches($external);
Что вы сделали до сих пор?