3v4l.org

run code in 500+ PHP versions simultaneously
<?php $arr[] = ["id" => 1, "name" => "Electronics", "parent_id" => 0]; $arr[] = ["id" => 2, "name" => "Mobile", "parent_id" => 1]; $arr[] = ["id" => 3, "name" => "Iphone", "parent_id" => 2]; $arr[] = ["id" => 4, "name" => "Men", "parent_id" => 0]; $arr[] = ["id" => 5, "name" => "Shirt", "parent_id" => 4]; function addToArr(&$arr, $data) { if ($data["parent_id"] == 0) return $arr[] = ["id" => $data["id"], "name" => $data["name"], "children"=> []]; foreach($arr as &$e) { if ($e["id"] == $data["parent_id"]) { $e["children"][] = ["id" => $data["id"], "name" => $data["name"], "children"=> []]; break; } addToArr($e["children"], $data); } } $res = []; foreach($arr as $e) addToArr($res, $e); print_r($res);

preferences:
21.9 ms | 474 KiB | 4 Q