我正在尝试从MySQL结果创建一个多维数组。这是父母的孩子关系。这样的事情。
$navArr = array();
$pageNav = Page::where('parent_id', 0)->orderBy('nav_order', 'asc')->get();
foreach($pageNav as $parent) {
$navArr[$parent->page_id] = $parent;
pageNavChildren = Page::where('parent_id', $parent->page_id)->orderBy('nav_order', 'asc')->get();
if($pageNavChildren) {
foreach($pageNavChildren as $child) {
$navArr[$parent->page_id]['childrens'] = array($child->page_id => $child);
}
}
}
它给了我一个数组,但数组中只有最后一个子数。我的猜测是它在循环中重写了。我需要一个包含所有父项的数组,如果父项有一个子项设置子键,在其中我需要在该一个键下的每个子数组。
答案 0 :(得分:1)
改变这个:
if($pageNavChildren) {
foreach($pageNavChildren as $child) {
$navArr[$parent->page_id]['childrens'] = array($child->page_id => $child);
}
}
要:
if($pageNavChildren) {
foreach($pageNavChildren as $child) {
$navArr[$parent->page_id]['childrens'][] = array($child->page_id => $child);
}
}