迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > PHP >

PHP 的 Warning Invalid Argument Supplied for foreach() 解决

作者:迹忆客 最近更新:2023/03/27 浏览次数:

本篇文章介绍如何修复 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

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 PHP 中获取时间差的分钟数

发布时间:2023/03/29 浏览次数:183 分类:PHP

本文介绍了如何在 PHP 中获取时间差的分钟数,包括 date_diff()函数和数学公式。它包括 date_diff()函数和数学公式。

PHP 中的重定向

发布时间:2023/03/29 浏览次数:136 分类:PHP

本教程演示了如何将用户从页面重定向到 PHP 中的其他页面

PHP 分页

发布时间:2023/03/29 浏览次数:66 分类:PHP

本教程介绍如何在 PHP 中对数据库行进行分页

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便