变量未被声明并赋值,那么就会报这种警告(E_NOTICE级别的警告),如
foreach ($items as $item) {
//do something
$counter++; //undefined variabel
}
尽管PHP是弱类型语言,可以不声明变量。但还是建议在使用变量前,先声明变量,然后再给变量初始化一个值,这是比较好的编码习惯。这样可以避免一些不可预知的bug。
使用未被声明的变量,PHP会报E_NOTICE的警告。
避免Undefined variable的警告方法:
1.通过代码避免这种错误。如声明变量,并给变量初始化一个值。对于字符串的变量可以初始化为空字符串。使用isset() 或者 !empty()来检查变量是否被声明。如果检查到变量未被初始化值,给变量赋一个默认值。
$myvar = '';
//isset()方式:
$myvar = isset($_POST['myvar ']) ? $_POST['myvar '] : '';
//empty()方式:
$myvar = !empty($_POST['myvar ']) ? $_POST['myvar '] : '';
2.可以考虑建一个错误handler,把E_NOTICE交给错误handler统一处理,如写到日记中。
set_error_handler('myErrorsHandler', E_NOTICE | E_STRICT);
3.对于ENOTICE级别的警告,PHP是允许不报的。禁止PHP报ENOTICE级别的警告:
error_reporting( error_reporting() & ~E_NOTICE )
推荐使用方法一来处理Undefined variable的警告