PHP递归数组

PHP递归数组,php,laravel,Php,Laravel,PHP-需要使用子数组创建此数组id 下面是数据库屏幕截图 Array ( [0] => Array ( [id] => 1 [children] => Array ( [0] => Array ( [id] => 2 [childre

PHP-需要使用子数组创建此数组id

下面是数据库屏幕截图

Array
(
 [0] => Array
    (
        [id] => 1
        [children] => Array
            (
                [0] => Array
                    (
                        [id] => 2
                        [children] => Array
                            (
                                [0] => Array
                                    (
                                        [id] => 3
                                    )

                                [1] => Array
                                    (
                                        [id] => 4
                                    )

                            )

                    )

                [1] => Array
                    (
                        [id] => 5
                    )

            )

       )

  )
我正在为made使用此功能,但仍停留在第一个孩子上

$data = BookCategory::all();
$arr  = [];
$i    = 0;
foreach ($data as $row) {
    if ($row->parent == 0) {
       $arr[$i] = ['id' => $row->id . '-' . $row->title];
       $this->_rec1($row->id, $arr, $i);
       $i++;
    }
 }


public function _rec1($id, &$arr, &$i)
{
    $getData = BookCategory::where('parent', '=', $id)->get();
    if (count($getData) > 0) {
        foreach ($getData as $row) {
            $arr[$i]['children'][] = ['id' => $row->id . '-' . $row->title];
            $this->_rec1($row->id, $arr, $i);
        }
    }

}
代码输出是。。。。

Array
(
[0] => Array
(
    [id] => 1-My books2
)

[1] => Array
    (
        [id] => 2-new book
        [children] => Array
            (
                [0] => Array
                    (
                        [id] => 3-my new more book
                    )

                [1] => Array
                    (
                        [id] => 4-new moew
                    )

                [2] => Array
                    (
                        [id] => 5-new moew2
                    )

                [3] => Array
                    (
                        [id] => 6-my new more book2
                    )

            )

    )

[2] => Array
    (
        [id] => 9-25
    )

[3] => Array
    (
        [id] => 10-28
    )

[4] => Array
    (
        [id] => 11-59
    )

)

提前感谢

如果您想要像第一个代码片段中那样的数组,您应该尝试以下方法:

$data = BookCategory::all();
$arr  = [];
foreach ($data as $row) {
    if ($row->parent == 0) {
        $arr[] = ['id' => $row->id, 'children' => []];
        $this->_rec1($row->id, $arr[count($arr])-1]);
    }
}

public function _rec1($id, &$arr)
{
    $getData = BookCategory::where('parent', '=', $id)->get();
    if (count($getData) > 0) {
        foreach ($getData as $row) {
            $arr[] = ['id' => $row->id, 'children' => []];
            $this->_rec1($row->id, $arr[count($arr])-1]['children']);
        }
    }
}

是的,我需要上面的代码