<?php
$root = new ArrayObject
(array( 'nodes'=>new ArrayObject
(array( '1'=>new ArrayObject
(array( 'id'=>'1',
'nodes'=>new ArrayObject
(array( '4'=>new ArrayObject
(array( 'id'=>'4',
'nodes'=>new ArrayObject
(array( '5'=>new ArrayObject
(array( 'id'=>'5',
'nodes'=>new ArrayObject
(array()) ))
))
))
))
)),
'id'=>'2',
'nodes'=>new ArrayObject
(array()) ),
'3'=>new ArrayObject
(array( 'id'=>'3',
'nodes'=>new ArrayObject
(array()) ))
))
));
foreach ($root['nodes'] as $_node_id => $_root_node) {
$_put_parent = function ($_node) use (&$_put_parent) {
foreach ($_node['nodes'] as $_sub_node_id => $_sub_node) {
$_put_parent($_sub_node);
$_sub_node['parent'] = $_node;
}
};
$_root_node['parent'] = null;
$_put_parent($_root_node);
}
echo '<pre>';
var_dump($root['nodes']['1']['nodes']['4']); var_dump($root['nodes']['1']['nodes']['4']['nodes']['5']['parent']); echo '</pre>';
?>
PD9waHAKCiRyb290ID0gbmV3IEFycmF5T2JqZWN0KGFycmF5KAogICAgJ25vZGVzJz0+bmV3IEFycmF5T2JqZWN0KGFycmF5KAogICAgICAgICcxJz0+bmV3IEFycmF5T2JqZWN0KGFycmF5KAogICAgICAgICAgICAnaWQnPT4nMScsCiAgICAgICAgICAgICdub2Rlcyc9Pm5ldyBBcnJheU9iamVjdChhcnJheSgKICAgICAgICAgICAgICAgICc0Jz0+bmV3IEFycmF5T2JqZWN0KGFycmF5KAogICAgICAgICAgICAgICAgICAgICdpZCc9Pic0JywKICAgICAgICAgICAgICAgICAgICAnbm9kZXMnPT5uZXcgQXJyYXlPYmplY3QoYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgICAgICc1Jz0+bmV3IEFycmF5T2JqZWN0KGFycmF5KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lkJz0+JzUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vZGVzJz0+bmV3IEFycmF5T2JqZWN0KGFycmF5KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICkpCiAgICAgICAgICAgICAgICAgICAgKSkKICAgICAgICAgICAgICAgICkpCiAgICAgICAgICAgICkpCiAgICAgICAgKSksCiAgICAgICAgJzInPT5hcnJheSgKICAgICAgICAgICAgJ2lkJz0+JzInLAogICAgICAgICAgICAnbm9kZXMnPT5uZXcgQXJyYXlPYmplY3QoYXJyYXkoKSkKICAgICAgICApLAogICAgICAgICczJz0+bmV3IEFycmF5T2JqZWN0KGFycmF5KAogICAgICAgICAgICAnaWQnPT4nMycsCiAgICAgICAgICAgICdub2Rlcyc9Pm5ldyBBcnJheU9iamVjdChhcnJheSgpKQogICAgICAgICkpCiAgICApKQopKTsKCmZvcmVhY2ggKCRyb290Wydub2RlcyddIGFzICRfbm9kZV9pZCA9PiAkX3Jvb3Rfbm9kZSkgewogICAgJF9wdXRfcGFyZW50ID0gZnVuY3Rpb24gKCRfbm9kZSkgdXNlICgmJF9wdXRfcGFyZW50KSB7CiAgICAgICAgZm9yZWFjaCAoJF9ub2RlWydub2RlcyddIGFzICRfc3ViX25vZGVfaWQgPT4gJF9zdWJfbm9kZSkgewogICAgICAgICAgICAkX3B1dF9wYXJlbnQoJF9zdWJfbm9kZSk7CiAgICAgICAgICAgICRfc3ViX25vZGVbJ3BhcmVudCddID0gJF9ub2RlOwogICAgICAgIH0KICAgIH07CgogICAgJF9yb290X25vZGVbJ3BhcmVudCddID0gbnVsbDsKICAgICRfcHV0X3BhcmVudCgkX3Jvb3Rfbm9kZSk7Cn0KCmVjaG8gJzxwcmU+JzsKdmFyX2R1bXAoJHJvb3RbJ25vZGVzJ11bJzEnXVsnbm9kZXMnXVsnNCddKTsKdmFyX2R1bXAoJHJvb3RbJ25vZGVzJ11bJzEnXVsnbm9kZXMnXVsnNCddWydub2RlcyddWyc1J11bJ3BhcmVudCddKTsKZWNobyAnPC9wcmU+JzsKCj8+