json_decode non torna proprio un array ma un dataset che rispecchia la struttura della stringa json di origine.
Codice PHP:
<?php
function print_result($array, $tab = 0) {
foreach ($array as $value) {
if (isset($value->id)) {
print str_repeat( '-' , $tab * 3 )."id=$value->id<br/>";
}
if (isset($value->children)) {
print str_repeat( '-' , $tab * 3 )."begin children of id=$value->id<br/>";
$tab2 = $tab;
print_result($value->children,++$tab2);
print str_repeat( '-' , $tab * 3 )."end children of id=$value->id<br/>";
}
}
return;
}
$json='[{"id":1},{"id":2,"children":[{"id":3},{"id":4},{"id":5,"children":[{"id":6},{"id":7},{"id":8}]},{"id":9},{"id":10}]},{"id":11},{"id":12}]';
$array = json_decode($json);
print_result($array);
?>
Dà
codice:
id=1
id=2
begin children of id=2
---id=3
---id=4
---id=5
---begin children of id=5
------id=6
------id=7
------id=8
---end children of id=5
---id=9
---id=10
end children of id=2
id=11
id=12