php - foreach() 错误处理 - 如何让它不执行任何操作?

标签 php error-handling foreach

这应该是非常基本的,但我有点难住了!

这是我的数组:

$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/

相关文章:

php - 反转 "English"字造句

javascript - 相同的按钮具有相同的效果 - jquery OOP

php - php session 变量不起作用

python - 识别python中的特定异常

php - Laravel 4多语言错误消息

PHP 升级问题 - 这是编码错误吗?

python - ValueError : invalid literal for float(): Timestep:

java - 有什么方法可以在 block 之外从 foreach 的使用者捕获 RuntimeException 吗?

Android Studio,修改 "foreach"命令返回行的样式在哪里

c++ - 这是 C++11 for 循环的已知缺陷吗?