php foreach Invalid argument supplied for foreach()_PHP_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > PHP > php foreach Invalid argument supplied for foreach()

php foreach Invalid argument supplied for foreach()

 2014/7/2 17:23:25  hae  程序员俱乐部  我要评论(0)
  • 摘要:在php中,foreach语法的遍历来源数组如果不是一个有效数组,php会出现错误警告Invalidargumentsuppliedforforeach(),但是很多时候这个数组是取自某些数据源的,有可能取不到而导致为空,为了防止频繁出现错误警告,应该在遍历之前对数组变量进行一个判断,如果该变量不是一个有效数组,则设置该变量为一个空数组即array(),这样是较好的解决办法。但是这个解决办法会导致代码的繁冗,我总结了一个较方便的写法,使用三元运算符:is_array
  • 标签:for PHP

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

class="message">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 完善解决方案
将报错的语句做如下修改(例):

把

QUOTE:
foreach($extcredits as $id => $credit) 
{
         if($credit['ratio']) 
         {
                 $exchcredits[$id] = $credit;
         }
}

改为

QUOTE:
if(is_array($extcredits))    //add
{                           
         foreach($extcredits as $id => $credit) 
         {
                  if($credit['ratio']) 
                  {
                              $exchcredits[$id] = $credit;
                  }         
        }
}   //add

或

QUOTE:
foreach((array)$extcredits as $id => $credit) 
{
         if($credit['ratio']) 
         {
                 $exchcredits[$id] = $credit;
         }
}
造成这个错误的原因多数是因为论坛升级、编码转换造成的!
如果对PHP熟悉的人,可以直接找到出错的地方,分析出错信息是对哪个数据库表操作时造成的(一般都是论坛的基本数据表),然后,找到相应表的原版数据导进去,问题可解决。
如果对PHP不熟悉的人,可以按出错信息提示的位置,用2楼的修改方法进行修改,问题可解决。
发表评论
用户名: 匿名