我怎么在PHP中来到未定义的偏移0通知

时间:2011-04-07 15:27:02

标签: php

我如何在php中找到未定义的偏移0通知

我在php中有一些语句,其中包含一些导致此通知的数组。 但是inoorder在php中使用empty()来解决这个问题。

$val= array(    
    'codes' => $this->arr1['BAC'],
    'lines' => $this->arr1['array1'][0]['RACE']  // this is the statement causing undefined offset 0
);

if(!empty( $this->arr1['array1'])){
$val= array(    
    'codes' => $this->arr1['BAC'],
    'lines' => $this->arr1['array1'][0]['RACE']  // this is the statement causing undefined offset 0
);
}

以上是推荐的。但我的问题是,如果我把它们放入if()。可以在if()

之外访问$ val

4 个答案:

答案 0 :(得分:5)

测试isset($this->arr1['array1']['0']['RACE']),您就会知道是否可以使用它。

您也可以关闭通知(不推荐):

error_reporting(E_ALL ^ E_NOTICE);

答案 1 :(得分:1)

在使用

之前检查数组的索引是否已设置
    if(isset($this->arr1['array1'][0]['RACE']))
    {
      $val= array(    
        'codes' => $this->arr1['BAC'],
        'lines' => $this->arr1['array1'][0]['RACE']  // this is the statement causing undefined offset 0
    );

    }

答案 2 :(得分:1)

PHP中的变量范围处于功能级别。在if()/ while()/ for()/ do()构造中定义变量与在构造外定义变量相同。但是,变量不会泄漏出函数,也不会泄漏到函数中:

$x = 'a';
if (1 == 1) {
   echo $x; // 'a'
   $y = 'b';
}
echo $y; // 'b'

function p() {
   echo $y; // null/blank/does not exist
   $z = 'c';
}
echo $z; // null/blank/does not exist

答案 3 :(得分:0)

只要if满足,就可以在if之外访问$ val。