未定义的偏移量1

时间:2013-05-24 05:34:57

标签: php google-api google-webmaster-tools

未定义的偏移量:1

你好...... 我面临一个未定义偏移的问题:第3行中的1。我无法理解它是什么类型的错误。 任何人都可以告诉我为什么这样的错误发生在PHP

行中未定义的偏移量:3

    foreach ($lines as $line)
    {
      list($var,$value) = explode('=', $line); //line 3
      $data[$var] = $value;
    }

7 个答案:

答案 0 :(得分:17)

您正在获取PHP notice,因为您正在尝试访问未设置的数组索引。

list($var,$value) = explode('=', $line);

上面的行会将字符串$line=一起展开,并在0th中分配$var值,在1st中分配$value值。当$line包含一些没有=的字符串时会出现此问题。

答案 1 :(得分:7)

我知道这是一个老问题,所提供的答案已经足够了。

  

由于您正在尝试访问阵列,因此您收到了PHP通知   未设置的索引。

但我认为,在有可能使用list() / explode()组合的空数组时,使用未定义索引解决问题的最佳方法是使用{{1设置默认值}}。

原因是当你使用array_pad()时,你知道你想要从数组中获得的变量数。

例如:

list()

基本上你传递第三个参数来爆炸,说明$delim = '='; $aArray = array() $intNumberOfListItems = 2; list($value1, $value2) = array_pad(explode($delim, $aArray, $intNumberOfListItems ), $intNumberOfListItems , null); 变量需要多少个值(在上面的例子中为2)。然后,当数组不包含列表变量的值时,使用list()给出默认值(在上面的示例中为null)。

答案 2 :(得分:1)

通过列表($ var,$ value)php将期望一个包含2个元素的数组,如果explode函数找不到相等的符号,它将只返回一个带有1个元素的数组,导致未定义的偏移量错误,偏移量为1是数组的第二个元素,因此很可能你的$ line变量之一没有等号

答案 3 :(得分:1)

这是由于阵列造成的。由于这个未定义的偏移误差将会显示数组索引...

所以请用print_r函数检查数组。

答案 4 :(得分:1)

list语言构造用于从数组创建单个变量。如果您的数组没有足够的元素来表示list调用中您期望的变量数,则会出现错误。在您的情况下,您有2个变量,因此您需要一个包含2个项目的数组 - 索引0和1。

http://php.net/manual/en/function.list.php

答案 5 :(得分:1)

解决方案:

$lines = array('one' => 'fruit=apple', 'two' => 'color=red', 'three' => 'language');

foreach ($lines as $line)
{
    list($var,$value) = (strstr($line, '=') ? explode('=', $line) : array($line, ''));
    $data[$var] = $value;
}

print_r($data);

试试这个..

供参考 http://in1.php.net/manual/en/function.list.php http://in1.php.net/manual/en/function.explode.php

答案 6 :(得分:1)

这是因为您的$line在字符串的任何地方都不包含“ =”,因此它在array中仅包含一个元素。list()用于在一个变量中分配变量列表操作。您的列表包含2个元素,但是从implode返回的数据来看,只有一个数据。因此,它引发了一个通知。 解决该问题的一种方法是使用array_pad()方法。

list($var,$value) = array_pad(explode('=', $line),2,null);
相关问题