3v4l.org

run code in 300+ PHP versions simultaneously
<?php $categories = array( array( 'parent_id' => 0, 'categories_id' => 1, ), array( 'parent_id' => 1, 'categories_id' => 11, ), array( 'parent_id' => 1, 'categories_id' => 111, ), array( 'parent_id' => 0, 'categories_id' => 2, ), array( 'parent_id' => 2, 'categories_id' => 22, ), ); $tree = array(); foreach ($categories as $category) { $tree = &build($tree, $category); } // var_export($tree); function &build(&$tree = array(), $category) { if (empty($category)) { return; } if ($category['parent_id'] == 0 && ! isset($category['childs'])) { $category = array_merge($category, array('childs' => array())); $tree = array_merge($tree, $category); return $tree; } foreach ($tree as $parent_id => $cate) { var_dump($tree); if ($category['parent_id'] == $parent_id) { $cate[$parent_id]['childs'] = $category; } if (is_array($cate)) { return build($tree, $category); } } return $tree; }

preferences:
59.48 ms | 402 KiB | 5 Q