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);

preferences:
25.79 ms | 406 KiB | 5 Q