这应该是非常基本的,但我有点难过!
这是我的阵列:
$menu = array(
'Home',
'Stuff'=>array(
'Losta Stuff',
'Less Stuff',
'Ur moms stuff',
'FAQ'
),
'Public Works'
);
这是我的逻辑:
echo "<ol>\n";
foreach( (array)$menu as $header )
{
echo ' <li><b>'.$header."</b><br />\n";
echo ' <ol>';
foreach( (array)$header as $headers )
{
echo ' <li>'.$headers.".</li>\n";
}
echo ' </ol>';
}
echo "</ol>\n";
正如您所看到的,家庭和公共工程中没有数据,所以我得到了一个
Warning: Invalid argument supplied for foreach() in test.php on line ##
如果我将(array)
添加到这样的$header
:foreach( (array)$header as $headers )
,它不再向我提供错误,但它只会将$header
显示为$headers
(即家庭 - 家庭,而不是家庭 - 没有)。
基本上,如果数据是空的,我希望它什么都不做!
答案 0 :(得分:2)
我看到这样的事情:
// your old menu was using keys for headers on "submenus" only
// this one uses keys for headers for everything
$menu = array(
'Home'=>'Home',
'Stuff'=>array(
'Losta Stuff',
'Less Stuff',
'Ur moms stuff',
'FAQ'
),
'Public Works' => 'Public Works',
);
echo "<ol>\n";
foreach( (array)$menu as $header => $items )
{
echo ' <li><b>'.$header."</b>";
if (is_array($items)) {
echo "<br />\n";
echo ' <ol>';
foreach( $items as $subhead )
{
echo ' <li>'.$subhead.".</li>\n";
}
echo ' </ol>';
}
}
echo "</ol>\n";
使用is_array确定当前菜单下是否有更多选项。
答案 1 :(得分:2)
您应该测试您尝试echo
的当前项目是否为数组,可以使用is_array
完成,然后采取相应措施。像下面这样的东西可能会成功。
<?php
$menu = array(
'Home',
'Stuff'=>array(
'Losta Stuff',
'Less Stuff',
'Ur moms stuff',
'FAQ'
),
'Public Works'
);
echo "<ol>\n";
foreach($menu as $menuName => $header )
{
if (!is_array($header))
{
echo ' <li><b>'.$header."</b><br />\n";
}
else
{
echo "<li><b>$menuName</b><ol>";
foreach($header as $headers )
{
echo ' <li>'.$headers.".</li>\n";
}
echo "</ol></li>";
}
}
echo "</ol>\n";