在一个应用程序中编写代码时,我偶然遇到了这个问题。
$ar = [
'first' => 1,
'second' => 2,
......
];
当我尝试检查$array
中不存在的索引时
if(isset($ar['third']) && !empty($ar['third'])){
echo "Found";
}else{
echo "Not Found";
}
它正常工作,没有出现预期的错误,但是当我将此条件放到通用函数中然后进行检查
function sanitize($value){
if(isset($value) && !empty($value)){
return true;
}else{
return false;
}
}
if(sanitize($ar['third'])){
echo "Found";
}else{
echo "Not Found";
}
以上示例引发了一个未定义的异常索引错误,有人可以解释为什么这导致了错误。
答案 0 :(得分:1)
$value
是因为它被声明为函数参数,因此它始终存在。因此,在这种情况下,使用isset()
是没有意义的。
function sanitize($value){ // <-- Variable is declared so it exists
// within the scope of this function
答案 1 :(得分:1)
您试图在实际执行isset / empty检查之前(因为$ar
函数中)在'third
'索引处引用sanitise
数组。
PHP因此显示if(sanitize($ar['third'])){
行的错误。