我可能没有正确地表达这个问题,所以这就是我们要实现的目标。array { [0]=> { ["Abilities"]=> { ["Numerical"]=> 3 } } [1]=> { ["Abilities"]=> { ["Verbal"]=> 1 } } [2]=> { ["Domain"]=> { ["Programming"]=> 0 } } } 到array { [0]=> { ["Abilities"]=> { ["Numerical"]=> 3 ["Verbal"]=> 1 } } [1]=> { ["Domain"]=> { ["Programming"]=> 0 } } } 我从外部来源获得此阵列,因此我需要优化这种方式才能使用它。
1 回答
森林海
TA贡献2011条经验 获得超2个赞
从外部来源获得的数组就像需要合并到单个树中的一组独立分支。您可以使用递归函数来创建要使用的“优化”结构。无论每个分支的深度如何,都应使用递归方法。
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);
- 1 回答
- 0 关注
- 197 浏览
添加回答
举报
0/150
提交
取消