这应该是非常基本的,但我有点难住了!
这是我的数组:
$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";
如您所见,家庭和公共(public)工程中没有数据,因此我得到了
Warning: Invalid argument supplied for foreach() in test.php on line ##
如果我像这样将 (array)
添加到 $header
中: foreach( (array)$header as $headers )
,则不会long 给了我错误,但它只是将 $header
显示为 $headers
(即 Home - Home,而不是 Home - Nothing)。
基本上,如果数据为空,我希望它什么都不做!
最佳答案
您应该测试您尝试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";
关于php - foreach() 错误处理 - 如何让它不执行任何操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2755263/