3v4l.org

run code in 300+ PHP versions simultaneously
<?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