<?php
$json = '[
{"id":3633,"name":"Mobile phones and accessories","left":1,"right":18,"level":1,"elements":0},
{"id":3638,"name":"Mobile phones","left":2,"right":3,"level":2,"elements":174},
{"id":21396,"name":"Tablets","left":19,"right":24,"level":1,"elements":0},
{"id":21450,"name":"Some Tablets","left":20,"right":21,"level":2,"elements":8},
{"id":21450,"name":"other Tablets","left":20,"right":21,"level":2,"elements":8}
]';
$data = new ArrayIterator(json_decode($json, true));
function buildTree(iterator $data, int $level = 1): array {
$tree = array();
while ($data->valid()) {
$item = $data->current();
if ($item['level'] < $level)
return $tree;
if ($item['level'] === $level) {
$data->next();
$tree[] = [
'item' => $item,
'children' => buildTree($data, $level + 1),
];
}
}
return $tree;
}
$tree = buildTree($data);
print_r($tree);
?>
preferences:
25.43 ms | 405 KiB | 5 Q