<?php
declare(strict_types=1);
$items = [
(object)['id' => 1, 'parentId' => 0, 'name' => "foo"],
(object)['id' => 2, 'parentId' => 1, 'name' => "bar"],
(object)['id' => 3, 'parentId' => 1, 'name' => "qux"],
(object)['id' => 4, 'parentId' => 3, 'name' => "zip"],
(object)['id' => 5, 'parentId' => 4, 'name' => "baz"]
];
$itemsById = [];
foreach ($items as $item) {
$itemsById[$item->id] = $item;
}
// ---
foreach ($itemsById as $id => $item) {
$itemsById[$item->parentId]->children[] = $item;
}
var_dump($itemsById);
preferences:
33.99 ms | 402 KiB | 5 Q