`

php foreach Invalid argument supplied for foreach()

    博客分类:
  • PHP
php 
阅读更多

在php中,foreach语法的遍历来源数组如果不是一个有效数组,php会出现错误警告

Invalid argument supplied for foreach()

,但是很多时候这个数组是取自某些数据源的,有可能取不到而导致为空,为了防止频繁出现错误警告,应该在遍历之前对数组变量进行一个判断,如果该变量不是一个有效数组,则设置该变量为一个空数组即array(),这样是较好的解决办法。

 但是这个解决办法会导致代码的繁冗,我总结了一个较方便的写法,使用三元运算符:

is_array($result = xxxxxxxxx)?null:$result = array();

即如果$result后的赋值表达式返回的结果是一个有效数组,则正常进行下面代码,否则给$result变量赋一个空数组值。

 --------------------------------------------------------------------------------------

Warning: Invalid argument supplied for foreach() 

问题Warning: Invalid argument supplied for foreach() in 完善解决方案

将报错的语句做如下修改(例):

 

把
foreach($extcredits as $id => $credit) {
	if($credit['ratio']) { 
		$exchcredits[$id] = $credit; 
	}
} 
改为 
if(is_array($extcredits)) {  //add 
	foreach($extcredits as $id => $credit) {
		if($credit['ratio']) {
			$exchcredits[$id] = $credit; 
		} 
	} 
}
或
foreach((array)$extcredits as $id => $credit) {
	if($credit['ratio']) {
		$exchcredits[$id] = $credit; 
	}
}

  

造成这个错误的原因多数是因为论坛升级、编码转换造成的! 如果对PHP熟悉的人,可以直接找到出错的地方,分析出错信息是对哪个数据库表操作时造成的(一般都是论坛的基本数据表),然后,找到相应表的原版数据导进去,问题可解决。

如果对PHP不熟悉的人,可以按出错信息提示的位置,用上面的修改方法进行修改,问题可解决。

 

 

分享到:
评论
2 楼 hae 2014-07-12  
ComBat_Func 写道
是将空转换为空数组么,的确是好招!

终于有人回我的博客了,好激动啊 
1 楼 ComBat_Func 2014-07-12  
是将空转换为空数组么,的确是好招!

相关推荐

    php下foreach提示Warning:Invalid argument supplied for foreach()的解决方法

    Warning: Invalid argument supplied for foreach() in E:wampwwwmyshopcart.php on line 95 ``` 这意味着在第95行的 `foreach` 循环中,你提供的变量 `$items` 不是一个有效的数组或可迭代对象。 **解决方法** 有...

    For 和 Foreach 的效率问题

    在编程语言中,`for`和`foreach`循环是两种常用的迭代工具,它们在处理集合或数组时发挥着重要作用。本文将深入探讨`for`和`foreach`在C#中的效率差异,以及如何根据具体场景选择合适的循环方式。 首先,`for`循环...

    php foreach 参数强制类型转换的问题

    大家都知道foreach的参数如果不是数组类型,在运行的时候 就会出现类似“Warning: Invalid argument supplied for foreach() in XXX”warning信息。

    foreach、while、for性能比较

    ### foreach、while、for性能比较 在编程领域中,循环结构是实现重复操作的基本手段之一。根据不同的场景和需求,开发者可以选择使用`foreach`、`while`或`for`等不同类型的循环。本文将深入探讨这三种循环在PHP中...

    老生常谈foreach(增强for循环)和for的区别

    老生常谈foreach(增强for循环)和for的区别 在 Java 编程语言中,foreach 和 for 是两种常用的循环语句,都是用于遍历数组或集合的元素。然而,foreach 和 for 之间存在一些关键的区别,了解这些区别对于编写高效的...

    全面解析JavaScript里的循环方法之forEach,for-in,for-of

    在JavaScript中,有三种主要的循环方法:`forEach`、`for-in`和`for-of`,每种都有其特定的用途和特点。 `forEach`方法是ES5引入的一个数组方法,简化了对数组元素的遍历。例如: ```javascript myArray.forEach...

    for foreach效率测试代码

    `for` 和 `foreach` 循环在C#中被广泛使用,它们各自有特定的用途和效率特点。本篇将深入探讨这两种循环结构,以及它们在执行大量遍历操作时的性能差异。 `for` 循环是一种灵活的循环结构,适用于需要知道循环次数...

    C#并发实战记录之Parallel.ForEach使用

    C#并发实战记录之Parallel.ForEach使用 本篇文章主要介绍了C#并发实战记录之Parallel.ForEach使用的相关知识点。通过示例代码,详细介绍了Parallel.ForEach的使用方法和优化技巧。 一、使用Parallel.ForEach优化...

    PHP 数组 for foreach 循环 array_column函数.rar

    在实际开发中,理解并熟练运用`for`、`foreach`循环以及`array_column`函数,可以帮助你更有效地处理和操作PHP数组,提高代码的可读性和效率。这些概念在处理数据库查询结果、数组排序、数据过滤等场景中尤其重要。...

    <php+mysql>PHP脚本条件判断,foreach循环,以及粘性表单

    &lt;php+mysql&gt;PHP脚本条件判断,foreach循环,以及粘性表单

    for,foreach,iterator的用法和区别

    "for、foreach、iterator的用法和区别" 在 Java 编程语言中,for、foreach 和 iterator 是三种常用的遍历数组和集合的方法。它们之间有相似之处,但也存在着许多不同之处。 相同点:三者都可以用来遍历数组和集合...

    测试mybatis里foreach用法

    在MyBatis中,`&lt;foreach&gt;`标签是一个非常重要的元素,它主要用于动态SQL语句的构建,尤其是在处理集合数据类型如List、Array、Map时。`&lt;foreach&gt;`标签的使用可以极大地提高代码的可读性和可维护性,避免了传统的字符...

    c#中Foreach详细用法

    在本文中,我们将详细介绍Foreach语句的用法和优点,并与传统的for循环语句进行比较。 一、Foreach语句的基本用法 -------------------------------- Foreach语句的基本语法结构为: ```csharp foreach (变量类型 ...

    Mybatis批量foreach merge into的用法

    Mybatis批量foreach merge into的用法 Mybatis批量foreach merge into的用法是通过Mybatis的动态SQL语法foreach循环插入实现的,这种方法可以批量插入时间价格表数据。如果某个套餐的某天的价格存在,则更新,不...

    Parallel.ForEach的卡死现象(线程操作问题C#源码实例)

    在.NET编程环境中,`Parallel.ForEach`是一个非常有用的并行处理工具,它允许开发者将数据集中的每个元素在多个线程上并行处理,以提高应用程序的执行效率。然而,正如标题所指出的,`Parallel.ForEach`可能会遇到...

    foreach遍历数组的顺序

    在PHP中,`foreach`循环通常用于遍历数组或对象,其基本结构如下: ```php foreach ($array as $value) { // 代码块 } ``` 在这里,`$array`是要遍历的数组,`$value`是每次循环中数组元素的当前值。`foreach`会...

    foreach和array的应用(VB6.0代码编写)

    在VB6.0编程环境中,`Foreach`循环和数组是两种非常重要的概念,它们在处理数据集合时发挥着核心作用。本篇文章将深入探讨这两个主题,并通过具体的代码示例来展示它们在实际编程中的应用。 一、数组 数组是一种...

    详解Java中的增强 for 循环 foreach

    "Java 中的增强 for 循环 foreach" Java 中的增强 for 循环 foreach 是一种语法糖,它能够提高性能,并减少代码出错的几率。foreach 循环是用来对数组或者集合进行遍历的语法,具体语法如下:for(元素类型 ele : ...

    C#在foreach遍历删除集合中元素的三种实现方法

    在foreach中删除元素时,每一次删除都会导致集合的大小和元素索引值发生变化,从而导致在foreach中删除元素时会抛出异常。 集合已修改;可能无法执行枚举操作。 方法一:采用for循环,并且从尾到头遍历 如果...

Global site tag (gtag.js) - Google Analytics