1.背景

今天学习PHPExcel的使用,在代码执行foreach($data as $value){...}的时候出现这样一个警告提示:Warning: Invalid argument supplied for foreach() in I:\WWW\PHPExcel\export.php on line 35;后来查询了一下,这个警告的意思是:foreach()遍历输出的是一无效的数组【注意,无效数组不等于空数组】,而导致我这个错误的原因是

【getType($i)这个方法,属于数据库操作,我把所有的数据库操作封装成了方法写在了另一个文件中,这里没有需要对象来调用,因此没有取到数据导致数组为空,从而导致$data这个是一个无效数组,从而引起了报错!】

2.摘要

为了代码在正式上线运行中频繁报错:

我们应该在遍历之前对数组变量进行一个判断:如果该变量不是一个有效数组,则设置该变量为一个空数组即array(),这样是较好的解决办法!【额(⊙o⊙)…但是像我这样,马大哈了,在测试的时候还是先把判断注释掉,这样才能知道到底是哪里错了!因为查了怎么解决这个警告提示,所以特此记录,如果有其他更好方法或想法,欢迎指正!】

3.解决方法

【在此,我使用三元运算符简便了判断数组是否为有效数组】

is_array( $data = $db->getType($i)) ? null : $data=array();

这行代码的意思:判断$data是否为一个有效数组,如果数组有效,继续下列操作,如果数组是无效数组,则给$data变量赋一个空数组值

【is_array():返回一个布尔值,功能是判断传入的变量是否是一个有效的数组!注意,空数组 $data=array() 是有一个空值的,是一个有效数组,自己可以测试一下】

PHP--Warning: Invalid argument supplied for foreach() in ...的更多相关文章

  1. foreach的参数不是数组:Warning: Invalid argument supplied for foreach

    Warning: Invalid argument supplied for foreach() 问题Warning: Invalid argument supplied for foreach() ...

  2. Warning: Invalid argument supplied for foreach()

    经常对提交过来的数据进行双重循环,但是为空时会报错:Warning: Invalid argument supplied for foreach() 如下解决即可:foreach($data[$i]  ...

  3. NOTIC: Invalid argument supplied for foreach()

    NOTIC: [2] Invalid argument supplied for foreach() Warning: Invalid argument supplied for foreach() ...

  4. php foreach 语法的遍历来源数组如果不是一个有效数组php会出现错误警告 Invalid argument supplied for foreach()

    在php中,foreach语法的遍历来源数组如果不是一个有效数组,php会出现错误警告 Invalid argument supplied for foreach() ,但是很多时候这个数组是取自某些 ...

  5. Yii 提示Invalid argument supplied for foreach() 等错误

    Yii 提示Invalid argument supplied for foreach() 或者 undefined variable: val等错误 只需要在对应的文件中加入error_report ...

  6. PHP:Invalid argument supplied for foreach()错误原因及解决办法

    在php中使用foreach循环遍历时报Invalid argument supplied for foreach()错误,是因为循环的数据不是一个有效的数组. 因此我们只要在foreach之前判断一 ...

  7. Invalid argument supplied for foreach()

    将需要被遍历的数组强制转换为数组类型即可 <?php $array = null; foreach((array)$array as $value){ #..code.... } ?>

  8. move_base Warning: Invalid argument "/map" passed to canTransform argument target_frame的解决方法

    把global_costmap_params.yaml和local_costmap_params.yaml文件里的头几行去掉“/”,然后重新编译就可以了. 效果如下:

  9. WARNING: Re-reading the partition table failed with error 22: Invalid argument

    在划分磁盘分区时,遇到错误"WARNING: Re-reading the partition table failed with error 22: Invalid argument&qu ...

随机推荐

  1. lua 高级

    io操作: io.input(filename):指定一个输入流,可以是标准输入stdin,也可以是一个文件路径,返回一个文件句柄: io.output(filename):指定一个输出流,可以是标准 ...

  2. C#如何定义全局变量

    C#中没有全局变量的概念,可以定义一个common类,通过静态变量来存放所有需要的全局变量,调用的时候通过common来调用即可. 例如:  public static class common // ...

  3. DEDE后台添加新变量出现:Request var not allow!的解决办法 相关案例演

    论坛上很多人都反馈说在后台添加新变量的时候会出现 "Request var not allow!" 的BUG错误,本文主要就是介绍如何去解决这个问题!下面看具体操纵:在DEDE根目 ...

  4. c# 文件夾操作

    #region 圖片對應異動           string newFilePath = "~/FileUpLoad/Book/" + bookModel.BookNo;     ...

  5. Python 之WEB前端插件

    1.Font Awesome ---- 设计字体,图标 2.EasyUI ---- 各种功能 3.JqueryUI ---- 类似EasyUI 4.bootstrap ---- 必须引入JQuery( ...

  6. mybaits中xml文件大于号和小于号的处理方法

    1.转义字符 原符号 < <= > >= & ' " 替换符号 < <= > >= & &apos; " 2 ...

  7. 深入理解js——prototype原型

    之前(深入理解js--一切皆是对象)中说道,函数也是一种对象.它也是属性的集合,你也可以对函数进行自定义属性.而JavaScript默认的给了函数一个属性--prototype(原型).每个函数都有一 ...

  8. ExtJs弹出窗口

    1.Ext.Msg.alert(String title, String msg, [Function fn], [Object scope]) 显示一个标准的带有一个"确定"按钮 ...

  9. sp_MSforeachtable使用方法

    1)说明系统存储过程sp_MSforeachtable和sp_MSforeachdb,是微软提供的两个不公开的存储过程,从ms sql 6.5开始.存放在SQL Server的MASTER数据库中. ...

  10. POJ 2186-Popular Cows (图论-强联通分量Korasaju算法)

    题目链接:http://poj.org/problem?id=2186 题目大意:有n头牛和m对关系, 每一对关系有两个数(a, b)代表a牛认为b牛是“受欢迎”的,且这种关系具有传递性, 如果a牛认 ...