PHP 的 Warning Invalid Argument Supplied for foreach() 解决
本篇文章介绍如何修复 PHP Warning: Invalid argument supplied for foreach() 。
PHP Warning: Invalid argument supplied for foreach()
在 PHP 中使用 foreach 循环时,有时会出现警告 Warning: Invalid argument supplied for foreach() 。 当我们为 foreach 循环提供无效参数时会出现此警告。
此错误的常见原因是当我们尝试将字符串作为值传递给 foreach 循环时。 foreach 循环用于遍历数组,但是当我们提供一个不是数组的值时,它会抛出 **Warning: Invalid argument supplied for foreach()**。
让我们尝试一个抛出此错误的简单示例:
<?php
$DemoString = "Hello! This is delftstack.com";
foreach($DemoString as $DemoValue){
echo $DemoValue;
}
?>
上面的代码将抛出 Invalid argument supplied for foreach() 错误,因为 foreach()
无法遍历字符串。
查看输出:
Warning: Invalid argument supplied for foreach() in C:\Apache24\htdocs\demo.php on line 3
我们必须为 foreach 循环提供一个数组来解决这个问题。 让我们尝试修复这个例子:
<?php
$DemoString = array("Hello!", "This", "is", "jiyik.com");
foreach($DemoString as $DemoValue){
echo $DemoValue."<br>";
}
?>
现在,当我们将字符串更改为数组时,应该修复此警告。 查看输出:
Hello!
This
is
jiyik.com
为 foreach()
提供的无效参数不仅出现在字符串中,任何像数组一样不可迭代的值都会抛出相同的警告。
这是我们尝试迭代函数返回值的另一个示例:
<?php
function DemoArray () {
return false;
}
$DemoArray = DemoArray();
foreach($DemoArray as $DemoValue) {
echo $DemoValue;
}
?>
正如我们所见,DemoArray()
函数返回 false,我们尝试将其分配给一个变量并使用 foreach()
循环对其进行迭代。 它应该抛出为 foreach()
提供的无效参数警告。
查看输出:
Warning: Invalid argument supplied for foreach() in C:\Apache24\htdocs\demo.php on line 8
理想情况下,要解决此问题,方法 DemoArray()
应该返回一个数组,但有时会发生这些情况。 最好用默认值处理这些情况,而不是反复修复问题。
让我们尝试使用默认值来处理这种情况:
<?php
function DemoArray() {
return false;
}
$DemoArray = DemoArray();
if (is_array($DemoArray) || is_object($DemoArray)) {
foreach($DemoArray as $DemoValue){
echo $DemoValue;
}
}
// In case the above method is not working, we set a default value in the else, or we can perform any other operations.
else {
$DemoArray = array("Hello!", "This", "is", "jiyik.com");
foreach($DemoArray as $DemoValue){
echo $DemoValue."<br>";
}
}
?>
现在上面的例子已经处理妥当了。 所以每当出现 foreach
循环的情况时,我们至少应该有一个错误语句的默认值。
查看输出:
Hello!
This
is
jiyik.com
相关文章
如何在 PHP 中获取时间差的分钟数
发布时间:2023/03/29 浏览次数:183 分类:PHP
-
本文介绍了如何在 PHP 中获取时间差的分钟数,包括 date_diff()函数和数学公式。它包括 date_diff()函数和数学公式。