PHP “Notice: Undefined variable” 和 “Notice: Undefined index”报错

1940 2016-11-25 15:30

下面我们来看一篇关于PHP “Notice: Undefined variable” 和 “Notice: Undefined index”报错,希望这篇文章能够帮助到各位朋友,有兴趣的朋友可以进来看看吧。


解决Notice: Undefined variable报错

虽然 PHP不需要预先声明变量,但是依然强烈推荐大家声明以避免因为忘记给变量赋值而引起的一些安全性漏洞及可能的BUG。所以PHP以非常低的报警级别(E_NOTICE)来提醒大家正在使用一个未声明的变量。

当然解决以上报错有如下几种方法,根据场景选择适合自己的:

1.(推荐)提前声明变量,例如当你想要为一个未声明的变量连接字符串的时候。或者使用isset()/!empty()来检查是否已经声明:

$value = ""; //初始化变量
             //"" 当下面需要对其进行字符串操作时
             //0  当下面需要对其数字操作时
//isset()
$value = isset($_POST['value']) ? $_POST['value'] : '';
//empty()
$value = !empty($_POST['value']) ? $_POST['value'] : '';
2.设置自定义的(error handler)来处理E_NOTICE错误

set_error_handler('myHandlerForMinorErrors', E_NOTICE | E_STRICT)
3.禁止E_NOTICE报警

error_reporting( error_reporting() & ~E_NOTICE )
强烈建议使用第一种方法

解决Notice: Undefined index报错

当你访问数组中尚未定义的索引时会出现 Undefined index问题。

1.在访问数组索引前检查是否存在,可以使用isset()或者array_key_exists()

//isset()
$value = isset($array['my_index']) ? $array['my_index'] : '';
//array_key_exists()
$value = array_key_exists('my_index', $array) ? $array['my_index'] : '';