为什么我得到为foreach()错误提供的无效参数?

时间:2018-06-05 16:46:00

标签: php

我一直在收到以下错误:

PHP Warning:  Invalid argument supplied for foreach() in /home/~accountname~/public_html/index.php on line 140

这是第40行的代码;

<p>
    <?php foreach ($Homes3 as $Home) {
          echo $Home['home_3'];
      } ?>
</p>

对于今天最好的部分并且不知道为什么,它在今天之前一直运作良好。

1 个答案:

答案 0 :(得分:1)

这是因为变量$Home3不满足foreach构造的要求,这要求第一个参数是数组。

如果您不确定变量或数组是否总是设置为somewhow,则应在代码中初始化它。我不能举一个例子,因为提供的代码只是输出。

但它看起来像这样:

$Homes3 = []; // This sets it to an empty array

然后你有了设置它的代码,例如来自数据库查询或表单数据。

或者,如果上述情况不可行,您可以在尝试使用之前检查它是否为数组。第一个建议是更好,因为你正确地管理数组,foreach中使用的空数组将什么都不做,不会产生错误或警告。但有时候,特别是在较旧的代码中,并不总是可能的。

if (is_array($Homes3)) {
    foreach ($Homes3 as $Home) {
        echo $Home['home_3'];
    }
}

如果不是数组,你可以输出另一条消息,例如“没有找到数据”(或更好的东西)。

所有这些都说,因为你只回显一个数组键($Home['home_3']),你可以取消循环并执行此操作:

echo isset($Homes['home_3']) ? $Homes['home_3'] : 'No data found';

但也许你的代码只是一个例子。