I have a multidimensional array of arrays (source below), where my keys and values are arbitrary strings. I want to create a new array (desired below), where the hierarchy stays the same, but every KEY is restructured into its own array, with the key itself becoming a 'title' value, and any subarrays are continued under 'children'.
How can I accomplish this using a recursive function that takes &$source and &$destination arrays, and populates the destination array accordingly?
Source Array:
Array (
[Alpha] => Array (
[Red] => one
[Blue] => two
)
[Bravo] => Array (
[Blue] => three
)
)
Desired Array:
Array (
[0] => Array (
[title] => Alpha
[children] => Array (
[0] Array([title] => Red, [children]= > false)
[1] Array([title] => Blue, [children]= > false)
)
)
[1] => Array (
[title] => Bravo
[0] Array([title] => Blue, [children]= > false)
)
)
)
Note: I don't care about the final nodes/leafs in my new array.
You can do te conversion without passing a reference to the destination array.
function convert_array($from){
if(!is_array($from)){
return false;
}
$to = array();
foreach($from as $k=>$v){
$to[] = array(
'title' => $k,
'children' => convert_array($v)
);
}
return $to;
}
$to[]
you are appending an element to the array (the same as using array_push
), using $to
you are overwriting the array each time - miguel_ibero 2012-04-05 21:20