如何将下面的数组转换为嵌套数组?
请参阅预期的结果代码。
顺便说一句,在我的实际应用程序中,我使用SHA-1哈希值作为键和&父键。
因此,所有密钥都是唯一的。
感谢。
$arr = array(
array(
'key' => 'apple',
'parent_key' => 'root',
'name' => '1'
),
array(
'key' => 'banana',
'parent_key' => 'root',
'name' => '2'
),
array(
'key' => 'sun',
'parent_key' => 'apple',
'name' => '1.1'
),
array(
'key' => 'moon',
'parent_key' => 'root',
'name' => '3'
),
array(
'key' => 'mars',
'parent_key' => 'sun',
'name' => '1.1.1'
)
);
预期结果:
$arr = array(
array(
'key' => 'apple',
'parent_key' => 'root',
'children' => array(
'key' => 'sun',
'parent_key' => 'apple',
'name' => '1.1',
'children' => array(
'key' => 'mars',
'parent_key' => 'sun',
'name' => '1.1.1'
)
)
),
array(
'key' => 'banana',
'parent_key' => 'root',
'name' => '2'
),
array(
'key' => 'moon',
'parent_key' => 'root',
'name' => '3'
)
);
答案 0 :(得分:0)
foreach($initial_array as $subarray){
if($subarray['parent_key'] == 'root'){
$final_array[$subarray['key']] = $subarray;
}else{
$final_array[$subarray['parent_key']]['children'][$subarray['key']] = $subarray;
}
}
这里唯一的一点是,看看你的例子,这段代码只能处理一个深度。例如,如果您有'parent_key' => 'sun'
,则无效。