Notice: Undefined offset 的解决方法
2016-06-23 11:50
323 查看
Notice: Undefined offset: 1 in D:\wwwroot\wr\askseo\404.php on line 5
Notice: Undefined offset: 2 in D:\wwwroot\wr\askseo\404.php on line 5
Notice: Undefined offset: 2 in D:\wwwroot\wr\askseo\404.php on line 7
Notice: Undefined offset: 1 in D:\wwwroot\wr\askseo\404.php on line 12
这问题很常出现在数组中的,程序是能正确地运行下去,但是在屏幕上总会出现这样的提示:Notice: Undefined offset: ….. 网上普遍是采用抑制其显示的方法,即更改php.ini文件中error_repoting的参数为”EALL & Notice “,这样屏幕就能正常显示了.
问题是解决了,但是总想不透offset:接下去的数字(如 Notice: Undefined offset: 4 ….)是什么意思.还有,句子里的语法明明是正确的,为什么会出现警告.冷静地思考了好几遍并尝试了每种可能,终于找到了答案.offset:接下去的数字是出错的数组下标,一般是超出了数组的取值范围,如定义了数组$A[]有10个元数,如果出现了$A[10]就会出现错误(Notice: Undefined offset: 10 ….),因为数组的下标是从0开始的,所以这个数组的下标就只能是0~9.因此在出现这类问题时,不要急于用抑制显示的方法(更简单的可以在当前文件的最前面加上一句”error_reporting(填offset:接下去的那个数字);,一定要注意你所用的数组下标,仔细思考一下,问题一定会很快得到解决的 !发也有可能是unset数组后再尝试读取其内容,php手册中有:
Just to confirm, USING UNSET CAN DESTROY AN ENTIRE ARRAY. I couldn’t find reference to this anywhere so I decided to write this.
The difference between using unset and using $myarray=array(); to unset is that obviously the array will just be overwritten and will still exist.
<?php
$myarray=array(“Hello”,”World”);
echo $myarray[0].$myarray[1];
unset($myarray);
//$myarray=array();
echo $myarray[0].$myarray[1];
echo $myarray;
?>
Output with unset is:
<?
HelloWorld
Notice: Undefined offset: 0 in C:webpagesdainsidermyarray.php on line 10
Notice: Undefined offset: 1 in C:webpagesdainsidermyarray.php on line 10
Output with $myarray=array(); is:
?>
<?
HelloWorld
Notice: Undefined offset: 0 in C:webpagesdainsidermyarray.php on line 10
Notice: Undefined offset: 1 in C:webpagesdainsidermyarray.php on line 10
Array
?>
原文地址http://hi.baidu.com/putijie/item/04190dde206bd913e1f46fa9
其实在报错的那一行前面加一个@符号,屏蔽错误就ok了。非常简单。
Notice: Undefined offset: 2 in D:\wwwroot\wr\askseo\404.php on line 5
Notice: Undefined offset: 2 in D:\wwwroot\wr\askseo\404.php on line 7
Notice: Undefined offset: 1 in D:\wwwroot\wr\askseo\404.php on line 12
这问题很常出现在数组中的,程序是能正确地运行下去,但是在屏幕上总会出现这样的提示:Notice: Undefined offset: ….. 网上普遍是采用抑制其显示的方法,即更改php.ini文件中error_repoting的参数为”EALL & Notice “,这样屏幕就能正常显示了.
问题是解决了,但是总想不透offset:接下去的数字(如 Notice: Undefined offset: 4 ….)是什么意思.还有,句子里的语法明明是正确的,为什么会出现警告.冷静地思考了好几遍并尝试了每种可能,终于找到了答案.offset:接下去的数字是出错的数组下标,一般是超出了数组的取值范围,如定义了数组$A[]有10个元数,如果出现了$A[10]就会出现错误(Notice: Undefined offset: 10 ….),因为数组的下标是从0开始的,所以这个数组的下标就只能是0~9.因此在出现这类问题时,不要急于用抑制显示的方法(更简单的可以在当前文件的最前面加上一句”error_reporting(填offset:接下去的那个数字);,一定要注意你所用的数组下标,仔细思考一下,问题一定会很快得到解决的 !发也有可能是unset数组后再尝试读取其内容,php手册中有:
Just to confirm, USING UNSET CAN DESTROY AN ENTIRE ARRAY. I couldn’t find reference to this anywhere so I decided to write this.
The difference between using unset and using $myarray=array(); to unset is that obviously the array will just be overwritten and will still exist.
<?php
$myarray=array(“Hello”,”World”);
echo $myarray[0].$myarray[1];
unset($myarray);
//$myarray=array();
echo $myarray[0].$myarray[1];
echo $myarray;
?>
Output with unset is:
<?
HelloWorld
Notice: Undefined offset: 0 in C:webpagesdainsidermyarray.php on line 10
Notice: Undefined offset: 1 in C:webpagesdainsidermyarray.php on line 10
Output with $myarray=array(); is:
?>
<?
HelloWorld
Notice: Undefined offset: 0 in C:webpagesdainsidermyarray.php on line 10
Notice: Undefined offset: 1 in C:webpagesdainsidermyarray.php on line 10
Array
?>
原文地址http://hi.baidu.com/putijie/item/04190dde206bd913e1f46fa9
其实在报错的那一行前面加一个@符号,屏蔽错误就ok了。非常简单。
相关文章推荐
- 图像处理与计算机视觉基础,经典以及最近发展
- ClamAV
- word加载项打包发布注意事项总结
- Java基础:Object
- 四个字符全排列
- redhat7.2解决yum安装 mysql-server没有可用包的问题
- AVFormatContext结构体
- 3、xen虚拟机复制
- 一个对帐的小脚本
- hibernate根据条件动态组装sql/hql语句(仿ibatis动态查询语句功能)
- 进程间通信方式
- 突然顿悟的Javascript中的this
- BZOJ 2436 NOI嘉年华(单调优化)
- 初级程序的日常
- 设计模式 观察者模式 以微信公众服务为例
- QNX车机底层操作系统技术解读
- main函数执行前后--全局构造和atexit
- linux 修改时间并永久生效
- java开发就业信息管理系统
- Android user模式下使用Screencast虚拟控制界面权限修改