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. 向mysql数据库中插入大二进制文件和大文本

    @Test      public void run() throws ClassNotFoundException, SQLException,                 FileNotFou ...

  2. python基础05 缩进与选择

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 缩进 Python最具特色的是用缩进来标明成块的代码.我下面以if选择结构来举例. ...

  3. SQL笔记-第三章,数据的增删改

    1.数据的插入 简单的INSERT语句 INSERT INTO T_Person(FName,FAge,FRemark) VALUES(‘Tom’,18,’USA’) 简化的INSERT语句(只对部分 ...

  4. javascript对象属性的赋值解析

    代码如下: function Animal(){} function Dog (age){ this.name = 'fuck you' ; this.age = age } var dog = ne ...

  5. Java基础_内部类、静态内部类、成员内部类、局部内部类、匿名内部类 (转)

    From: http://www.itzhai.com/java-based-notebook-a-static-inner-class-within-a-class-member-within-th ...

  6. Cacti客户端SNMP的安装和配置

    安装 yum -y install net-snmp 配置 编辑/etc/snmp/snmpd.conf文件 找到下面这句: access  notConfigGroup ""   ...

  7. Python字典方法总结

    1.清空字典中元素清空,dict变为{} L.clear()-> None.  Remove all items from L 1 2 3 4 >>> L ={'shaw':2 ...

  8. 直接使用docker而无须加sudo

    从0.5.2开始docker的守护进程总是以root用户来运行.docker守护进程绑定的是Unix的socket而不是一个TCP端口.Unix的socket默认属于root用户,所以,使用docke ...

  9. 计算机病毒实践汇总四:netcat使用方法

    在尝试学习分析的过程中,判断结论不一定准确,只是一些我自己的思考和探索.敬请批评指正! 1. netcat概述 (1)特性 "TCP/IP协议栈瑞士军刀",可以被用在支持端口扫描. ...

  10. <img>标签

    <img src="w3school.jpg" width="104" height="142" />注释:图像的名称和尺寸是以 ...