PHP--Warning: Invalid argument supplied for foreach() in ...
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 ...的更多相关文章
- foreach的参数不是数组:Warning: Invalid argument supplied for foreach
Warning: Invalid argument supplied for foreach() 问题Warning: Invalid argument supplied for foreach() ...
- Warning: Invalid argument supplied for foreach()
经常对提交过来的数据进行双重循环,但是为空时会报错:Warning: Invalid argument supplied for foreach() 如下解决即可:foreach($data[$i] ...
- NOTIC: Invalid argument supplied for foreach()
NOTIC: [2] Invalid argument supplied for foreach() Warning: Invalid argument supplied for foreach() ...
- php foreach 语法的遍历来源数组如果不是一个有效数组php会出现错误警告 Invalid argument supplied for foreach()
在php中,foreach语法的遍历来源数组如果不是一个有效数组,php会出现错误警告 Invalid argument supplied for foreach() ,但是很多时候这个数组是取自某些 ...
- Yii 提示Invalid argument supplied for foreach() 等错误
Yii 提示Invalid argument supplied for foreach() 或者 undefined variable: val等错误 只需要在对应的文件中加入error_report ...
- PHP:Invalid argument supplied for foreach()错误原因及解决办法
在php中使用foreach循环遍历时报Invalid argument supplied for foreach()错误,是因为循环的数据不是一个有效的数组. 因此我们只要在foreach之前判断一 ...
- Invalid argument supplied for foreach()
将需要被遍历的数组强制转换为数组类型即可 <?php $array = null; foreach((array)$array as $value){ #..code.... } ?>
- move_base Warning: Invalid argument "/map" passed to canTransform argument target_frame的解决方法
把global_costmap_params.yaml和local_costmap_params.yaml文件里的头几行去掉“/”,然后重新编译就可以了. 效果如下:
- 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 ...
随机推荐
- DEDE后台添加新变量出现:Request var not allow!的解决办法 相关案例演
论坛上很多人都反馈说在后台添加新变量的时候会出现 "Request var not allow!" 的BUG错误,本文主要就是介绍如何去解决这个问题!下面看具体操纵:在DEDE根目 ...
- 41. 这张表lbdeveloplog可以查看各个对象的提交情况,包括是哪个IP提交的
lbdeveloplog 这张表lbdeveloplog可以查看各个对象的提交情况,包括是哪个IP提交的
- Firefox 23中的新特性(新陷阱)
话说有一天突然发现我们的网站页面上的JQuery功能都失效了,Firebug中显示如下的错误 Blocked loading mixed active content "http://xxx ...
- iOS nib file owner
nib文件中的file owner属性,设定后app在运行时加载nib文件的过程中会通过file owner重新建立nib文件中描述的控件与其在file owner中对应的IBOutlet或IBAct ...
- [Tomcat 源码分析系列] (附件) : setclasspath.bat 脚本
@echo off rem Licensed to the Apache Software Foundation (ASF) under one or more rem contributor lic ...
- maven 加入本地jar包
Apache Maven,由Apache软件基金会所提供.基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建.报告和文档等步骤.曾是Jakarta项目的子项目,现 ...
- 【原】JS正则表达式里的控制符
正则表达式易于使用而又让人费解,乍一看上去,就像是一行行的乱码,但是它的功能确实又不容小觑.今天整理正则时,纠正了自己的一个误解. 先缕一缕: 正则表达式的两种声明方式: 字面量.构造器 (RegEx ...
- AndroidStudio调试APP
AndroidStudio调试APP 电脑用数据线连上手机 开启手机的开发者模式 注:通常连续狂点手机的版本号即可显示出开发者选项,然后进入菜单,勾选开发者选项.USB调试. 给程序加断点 单击调试按 ...
- Diagramming for WinForms 的安装和配置
Diagramming for WinForms 是MindFusion公司推出的商业版通用流程图控件. 运行环境: WIN7 + .Net4.0 + Visual2010 试用版控件下载地址:htt ...
- [2015hdu多校联赛补题]hdu5371 Hotaru's problem
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5371 题意:把一个数字串A翻过来(abc翻过来为cba)的操作为-A,我们称A-AA这样的串为N-se ...