3v4l.org

run code in 300+ PHP versions simultaneously
<?php $flat_employees_json = '[{ "FirstName": "Tom", "LastName": "Jones", "EmployeeID": "123", "ManagerEmployeeID": "", "Manager Name": "" }, { "FirstName": "Alice", "LastName": "Wong", "EmployeeID": "456", "ManagerEmployeeID": "123", "Manager Name": "Tom Jones" }, { "FirstName": "Tommy", "LastName": "J.", "EmployeeID": "654", "ManagerEmployeeID": "123", "Manager Name": "Tom Jones" }, { "FirstName": "Billy", "LastName": "Bob", "EmployeeID": "777", "ManagerEmployeeID": "123", "Manager Name": "" }, { "FirstName": "Rik", "LastName": "A.", "EmployeeID": "622", "ManagerEmployeeID": "777", "Manager Name": "Billy Bob" }, { "FirstName": "Bob", "LastName": "Small", "EmployeeID": "111", "ManagerEmployeeID": "622", "Manager Name": "Rik A." }, { "FirstName": "Small", "LastName": "Jones", "EmployeeID": "098", "ManagerEmployeeID": "622", "Manager Name": "Rik A" }, { "FirstName": "Eric", "LastName": "C.", "EmployeeID": "222", "ManagerEmployeeID": "777", "Manager Name": "Billy Bob" }, { "FirstName": "Issue", "LastName": "Here", "EmployeeID": "2554433", "ManagerEmployeeID": "123", "Manager Name": "Tom Jones" }]'; $input = json_decode($flat_employees_json, true); $input = array_column($input, null, "EmployeeID"); $input = array_map(function ($entry) { return (object) $entry; }, $input); $output = array_values(array_filter(array_map(function ($entry) use ($input) { if (!empty($entry->ManagerEmployeeID)) { $input[$entry->ManagerEmployeeID]->employees[] = $entry; return null; } return $entry; }, $input))); echo json_encode($output, JSON_PRETTY_PRINT);
Output for 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.34, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.19, 8.3.0 - 8.3.7
[ { "FirstName": "Tom", "LastName": "Jones", "EmployeeID": "123", "ManagerEmployeeID": "", "Manager Name": "", "employees": [ { "FirstName": "Alice", "LastName": "Wong", "EmployeeID": "456", "ManagerEmployeeID": "123", "Manager Name": "Tom Jones" }, { "FirstName": "Tommy", "LastName": "J.", "EmployeeID": "654", "ManagerEmployeeID": "123", "Manager Name": "Tom Jones" }, { "FirstName": "Billy", "LastName": "Bob", "EmployeeID": "777", "ManagerEmployeeID": "123", "Manager Name": "", "employees": [ { "FirstName": "Rik", "LastName": "A.", "EmployeeID": "622", "ManagerEmployeeID": "777", "Manager Name": "Billy Bob", "employees": [ { "FirstName": "Bob", "LastName": "Small", "EmployeeID": "111", "ManagerEmployeeID": "622", "Manager Name": "Rik A." }, { "FirstName": "Small", "LastName": "Jones", "EmployeeID": "098", "ManagerEmployeeID": "622", "Manager Name": "Rik A" } ] }, { "FirstName": "Eric", "LastName": "C.", "EmployeeID": "222", "ManagerEmployeeID": "777", "Manager Name": "Billy Bob" } ] }, { "FirstName": "Issue", "LastName": "Here", "EmployeeID": "2554433", "ManagerEmployeeID": "123", "Manager Name": "Tom Jones" } ] } ]

preferences:
180.86 ms | 411 KiB | 302 Q