<?php
function transform_impl($arr, $obj, &$res) {
foreach ($arr as $item) {
$children = @$item['children'];
unset($item['children']); if ($children) {
transform_impl
($children, array_merge($obj, $item), $res); }
}
}
function transform($arr) {
transform_impl
($arr, array(), $res); return $res;
}
array("category" => "vegetable", "type" => "garden", "children" => ),
array("category" => "fruit", "type" => "citrus") )));
PD9waHAKCmZ1bmN0aW9uIHRyYW5zZm9ybV9pbXBsKCRhcnIsICRvYmosICYkcmVzKSB7CgkkcmVzID0gYXJyYXkoKTsKCWZvcmVhY2ggKCRhcnIgYXMgJGl0ZW0pIHsKCQkkY2hpbGRyZW4gPSBAJGl0ZW1bJ2NoaWxkcmVuJ107CgkJdW5zZXQoJGl0ZW1bJ2NoaWxkcmVuJ10pOwoJCSRyZXNbXSA9IGFycmF5X21lcmdlKCRvYmosICRpdGVtKTsKCQlpZiAoJGNoaWxkcmVuKSB7CgkJCXRyYW5zZm9ybV9pbXBsKCRjaGlsZHJlbiwgYXJyYXlfbWVyZ2UoJG9iaiwgJGl0ZW0pLCAkcmVzKTsKCQl9Cgl9Cn0KCmZ1bmN0aW9uIHRyYW5zZm9ybSgkYXJyKSB7CgkkcmVzID0gYXJyYXkoKTsKCXRyYW5zZm9ybV9pbXBsKCRhcnIsIGFycmF5KCksICRyZXMpOwoJcmV0dXJuICRyZXM7Cn0KCnByaW50X3IodHJhbnNmb3JtKGFycmF5KAoJYXJyYXkoImNhdGVnb3J5IiA9PiAidmVnZXRhYmxlIiwgInR5cGUiID0+ICJnYXJkZW4iLCAiY2hpbGRyZW4iID0+CgkJYXJyYXkoYXJyYXkoIm5hbWUiID0+ICJjYWJiYWdlIiksIGFycmF5KCJuYW1lIiA9PiAiZWdncGxhbnQiKSkKCSksCglhcnJheSgiY2F0ZWdvcnkiID0+ICJmcnVpdCIsICJ0eXBlIiA9PiAiY2l0cnVzIikKKSkpOw==