PHP递归数组
PHP-需要使用子数组创建此数组id 下面是数据库屏幕截图PHP递归数组,php,laravel,Php,Laravel,PHP-需要使用子数组创建此数组id 下面是数据库屏幕截图 Array ( [0] => Array ( [id] => 1 [children] => Array ( [0] => Array ( [id] => 2 [childre
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']);
}
}
}
是的,我需要上面的代码