php 获取未编译的数据,PHP注意:未定义的偏移量:1与数组读取数据时

PHP注意:未定义的偏移量:1与数组读取数据时

我得到这个PHP错误:

PHP Notice: Undefined offset: 1

这里是引发它的PHP代码:

$file_handle = fopen($path."/Summary/data.txt","r"); //open text file $data = array(); // create new array map while (!feof($file_handle) ) { $line_of_text = fgets($file_handle); // read in each line $parts = array_map('trim', explode(':', $line_of_text, 2)); // separates line_of_text by ':' trim strings for extra space $data[$parts[0]] = $parts[1]; // map the resulting parts into array //$results('NAME_BEFORE_:') = VALUE_AFTER_: }

这个错误是什么意思? 什么原因导致这个错误

更改

$data[$parts[0]] = $parts[1];

if ( ! isset($parts[1])) { $parts[1] = null; } $data[$parts[0]] = $parts[1];

或者干脆:

$data[$parts[0]] = isset($parts[1]) ? $parts[1] : null;

不是你的文件的每一行都有一个冒号,因此爆炸就返回一个大小为1的数组。

根据php.net可能从爆炸返回值 :

返回通过在由分隔符形成的边界上拆分string参数所创build的string数组。

如果分隔符是空string(“”),则explode()将返回FALSE。 如果分隔符包含一个不包含在string中的值,并且使用了一个负数限制,那么将返回一个空数组, 否则将返回一个包含string的数组。

如何在PHP中重现上述错误:

php> $yarr = array(3 => 'c', 4 => 'd'); php> echo $yarr[4]; d php> echo $yarr[1]; PHP Notice: Undefined offset: 1 in /usr/local/lib/python2.7/dist-packages/phpsh/phpsh.php(578) : eval()'d code on line 1

那个错误信息是什么意思?

这意味着PHP编译器查找关键字1并运行哈希反对它,并没有发现任何值与它相关,然后说Undefined offset: 1

我如何使这个错误消失?

在返回它的值之前询问数组是否存在键值,如下所示:

php> echo array_key_exists(1, $yarr); php> echo array_key_exists(4, $yarr); 1

如果该数组不包含您的密钥,请不要要求其值。 虽然这个解决scheme使你的程序双重工作,“检查它是否存在”,然后“去得到它”。

更快的替代解决scheme:

如果得到一个丢失的键是由错误引起的例外情况,那么获取该值(如echo $yarr[1]; )会更快,并捕获该偏移量错误并像下面这样处理它: https:// stackoverflow。 COM / A /四十四万五千一百三十一分之五百三十七万三千八百二十四

这是一个“PHP通知”,所以你理论上可以忽略它。 更改php.ini :

error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED

error_reporting = E_ALL & ~E_NOTICE

这显示所有错误,除了通知。

我刚刚有这个问题,我甚至不相信这是我的错误:

Array("Semester has been set as active!", true) Array("Failed to set semester as active!". false)

实际上是! 我只是不小心input“ 。 ”而不是“ , ”…

你也可以尝试删除警告…

error_reporting=0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值