一旦 PHP 的内置 foreach 尝试迭代一个未被识别为数组或者对象的数据结构,就会触发“Invalid Argument Supplied for Foreach()”错误(为 foreach() 提供的参数无效)。
让我们看看一个代码片段:
<?php function getList() { //这里发生了几个错误,将返回布尔值 FALSE而不是数组/列表。 // return false; } //从函数调用中检索数组。 $myList = getList(); //循环遍历 $myList 数组。 foreach ($myList as $arrayItem) { //对数组元素进行操作 } ?>
此代码的输出将导致“为 foreach() 提供的参数无效”错误。
让我们弄清楚它为什么会发生以及如何解决错误。
错误的主要原因是 getlist() 函数返回的是布尔值而不是数组。
需要注意的是 foreach() 命令只能迭代对象或者数组。
解决此错误可能非常简单。
我们所需要的只是在 foreach 命令被绕过之前检查。
下面的代码清楚地显示了如何解决错误:
<?php function getList() { //Assume some error occurs here and instead of //a list/array, a boolean FALSE is returned. return false; } //Get the array from a function call. $myList = getList(); //Check if $myList is indeed an array or an object. if (is_array($myList) || is_object($myList)) { //If yes, then foreach() will iterate over it. foreach ($myList as $arrayItem) { //Do something. } } else //If $myList was not an array, then this block is executed. { echo "Unfortunately, an error occurred."; } ?>
在 PHP 中的foreach()
在 PHP 中,foreach() 构造允许直接迭代数组。
它只对对象和数组进行操作。
在具有不同数据类型的变量上使用它后,会导致错误。
在 PHP 5 中,一旦 foreach 开始首先执行,内部数组指针将自动重置为数组的第一个元素。
因此,没有必要在 foreach 循环之前调用 reset() 函数。
日期:2020-06-02 22:15:48 来源:oir作者:oir