"Notice: Trying to get property" 用于嵌套菜单
"Notice: Trying to get property" for nested menu
cID
cPID
cSlug
cName
1
0
hello
H1
2
0
world
WORLD
3
0
mars
MARS
4
1
people
People
5
1
dogs
Dogs
6
3
cats
Cats:)
cPID:父 ID
PHP:
$getMenuData = $db->table($vtCategories)->getAll();
$menu = [];
foreach ($getMenuData as $row) {
if ($row->cPID === 0) {
$menu[$row->cID] = $row;
$menu[$row->cID]['submenus'] = [];
} else {
$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;
}
}
我收到这个错误:
Notice: Trying to get property 'cID' of non-object in
/var/www/clients/client7/web31/web/test1.php on line 16
我哪里做错了?
如果$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
cID | cPID | cSlug | cName |
---|---|---|---|
1 | 0 | hello | H1 |
2 | 0 | world | WORLD |
3 | 0 | mars | MARS |
4 | 1 | people | People |
5 | 1 | dogs | Dogs |
6 | 3 | cats | Cats:) |
cPID:父 ID
PHP:
$getMenuData = $db->table($vtCategories)->getAll();
$menu = [];
foreach ($getMenuData as $row) {
if ($row->cPID === 0) {
$menu[$row->cID] = $row;
$menu[$row->cID]['submenus'] = [];
} else {
$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;
}
}
我收到这个错误:
Notice: Trying to get property 'cID' of non-object in /var/www/clients/client7/web31/web/test1.php on line 16
我哪里做错了?
如果$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