<?php
$json = '{
"id": 1,
"label": "Beef",
"sector_page_id": null,
"value": 0,
"tree_children": [
{
"id": 46,
"label": "Beef",
"sector_page_id": null,
"value": 0,
"tree_children": [
{
"id": 47,
"label": "Beef - UK",
"sector_page_id": null,
"value": 15,
"tree_children": []
},
{
"id": 48,
"label": "Beef - Europe",
"sector_page_id": null,
"value": 25,
"tree_children": []
},
{
"id": 49,
"label": "Beef - Rest of World",
"sector_page_id": null,
"value": 0,
"tree_children": []
}
]
}
]
}';
$obj = json_decode($json);
function sum_recursive(object $obj): int {
foreach ($obj->tree_children as $child) {
$obj->value += sum_recursive($child);
}
return $obj->value;
}
sum_recursive($obj);
var_export($obj);
- Output for 7.4.0 - 7.4.33, 8.0.1 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.26, 8.4.1 - 8.4.13
- (object) array(
'id' => 1,
'label' => 'Beef',
'sector_page_id' => NULL,
'value' => 40,
'tree_children' =>
array (
0 =>
(object) array(
'id' => 46,
'label' => 'Beef',
'sector_page_id' => NULL,
'value' => 40,
'tree_children' =>
array (
0 =>
(object) array(
'id' => 47,
'label' => 'Beef - UK',
'sector_page_id' => NULL,
'value' => 15,
'tree_children' =>
array (
),
),
1 =>
(object) array(
'id' => 48,
'label' => 'Beef - Europe',
'sector_page_id' => NULL,
'value' => 25,
'tree_children' =>
array (
),
),
2 =>
(object) array(
'id' => 49,
'label' => 'Beef - Rest of World',
'sector_page_id' => NULL,
'value' => 0,
'tree_children' =>
array (
),
),
),
),
),
)
preferences:
118.61 ms | 410 KiB | 5 Q