3v4l.org

run code in 300+ PHP versions simultaneously
<?php $json = '{ "users": [{ "user_id": 2, "ref_id": 1, "package": [{ "name": "Basic" }, { "direct": 200 }, { "indirect": 100 } ], "children": [{ "user_id": 58, "ref_id": 2, "package": [{ "name": "Basic" }, { "direct": 200 }, { "indirect": 100 } ], "children": 0 }, { "user_id": 59, "ref_id": 2, "package": [{ "name": "Basic" }, { "direct": 200 }, { "indirect": 100 } ], "children": 0 }, { "user_id": 111, "ref_id": 2, "package": [{ "name": "Basic" }, { "direct": 200 }, { "indirect": 100 } ], "children": 0 }, { "user_id": 116, "ref_id": 2, "package": [{ "name": "Diamond" }, { "direct": 1000 }, { "indirect": 500 } ], "children": 0 }, { "user_id": 119, "ref_id": 2, "package": [{ "name": "Basic" }, { "direct": 200 }, { "indirect": 100 } ], "children": 0 } ] }, { "user_id": 100, "ref_id": 1, "package": [{ "name": "Basic" }, { "direct": 200 }, { "indirect": 100 } ], "children": [{ "user_id": 101, "ref_id": 100, "package": [{ "name": "Basic" }, { "direct": 200 }, { "indirect": 100 } ], "children": 0 }, { "user_id": 102, "ref_id": 100, "package": [{ "name": "Basic" }, { "direct": 200 }, { "indirect": 100 } ], "children": 0 }, { "user_id": 103, "ref_id": 100, "package": [{ "name": "Basic" }, { "direct": 200 }, { "indirect": 100 } ], "children": 0 }, { "user_id": 104, "ref_id": 100, "package": [{ "name": "Basic" }, { "direct": 200 }, { "indirect": 100 } ], "children": 0 }, { "user_id": 105, "ref_id": 100, "package": [{ "name": "Basic" }, { "direct": 200 }, { "indirect": 100 } ], "children": 0 }, { "user_id": 106, "ref_id": 100, "package": [{ "name": "Basic" }, { "direct": 200 }, { "indirect": 100 } ], "children": 0 }, { "user_id": 107, "ref_id": 100, "package": [{ "name": "Basic" }, { "direct": 200 }, { "indirect": 100 } ], "children": 0 }, { "user_id": 108, "ref_id": 100, "package": [{ "name": "Basic" }, { "direct": 200 }, { "indirect": 100 } ], "children": 0 }, { "user_id": 109, "ref_id": 100, "package": [{ "name": "Basic" }, { "direct": 200 }, { "indirect": 100 } ], "children": 0 }, { "user_id": 110, "ref_id": 100, "package": [{ "name": "Basic" }, { "direct": 200 }, { "indirect": 100 } ], "children": 0 }, { "user_id": 117, "ref_id": 100, "package": [{ "name": "Diamond" }, { "direct": 1000 }, { "indirect": 500 } ], "children": 0 }, { "user_id": 129, "ref_id": 100, "package": [{ "name": "Diamond" }, { "direct": 1000 }, { "indirect": 500 } ], "children": 0 }, { "user_id": 130, "ref_id": 100, "package": [{ "name": "Basic" }, { "direct": 200 }, { "indirect": 100 } ], "children": 0 } ] } ] }'; $result['sum_direct'] = 0; $result['sum_indirect'] = 0; $parents_indirect = 0; $array = json_decode($json, true)['users']; foreach ($array as $users) { $result['sum_direct'] += $users['package'][1]['direct']; $parents_indirect += $users['package'][2]['indirect']; } array_walk_recursive($array, function ($v, $k) use (&$result) { if ($k === 'indirect') { $result['sum_indirect'] += $v; } }); $result['sum_indirect'] -= $parents_indirect; echo json_encode($result);
Output for 5.6.38, 7.1.0 - 7.1.24, 7.2.0 - 7.2.33, 7.3.16 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.25, 8.4.1 - 8.4.12
{"sum_direct":400,"sum_indirect":3000}

preferences:
132.12 ms | 407 KiB | 5 Q