嵌套菜单的"Notice: Trying to get property"


cName你好//tr>世界火星人狗猫[/tr>
cID cPID cSlug
1 0H1
2 0世界
3 0 火星
4 1
5 1
6 3猫:(

如果$row是对象,则不能执行$menu[$row->cID]['submenus'],因为$menu[$row->cID]是对象,而不是数组。

您应该使用$menu[$row->cID]->submenus

此外,$row->cPID === 0不是一个好的条件,因为如果不创建";主";如果cPID不为0,则输入。

如果不存在,您可以使用if (!isset($menu[$row->cID])) {来创建主条目,并且如果定义了cPID,则要添加的if ($row->cPID > 0) {

全代码

$menu = [];
foreach ($getMenuData as $row) {
if (!isset($menu[$row->cID])) {
$menu[$row->cID] = $row;
$menu[$row->cID]->submenus = [];
} 
if ($row->cPID > 0) {
$menu[$row->cPID]->submenus[] = $row;
}
}
foreach ($menu as $item) {

echo $item->cID . '<br>' . PHP_EOL;    //  <<--- LINE 16
foreach ($item->submenus as $subitem) {
echo '<br>' . $subitem->cName . '--' . $subitem->cPID . PHP_EOL;
}
}

输出:

1<br>
<br>People--1
<br>Dogs--1
2<br>
3<br>
<br>Cats:)--3

相关内容

最新更新