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
)
)
)
)
我正在使用这个函数,但卡在第一个子
$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
)
)
Thanks in Advance
如果您想要一个像第一个代码片段那样的数组,您应该尝试这样做:
$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']);
}
}
}