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