我如何在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答案 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。