基本上我想避免做这样的事情:
if((isset($var_1) && !empty($var_1)) || (isset($var_2) && !empty($var_2)) ...) { ....
所以我创建了一个试图解决它的函数:
function set($item) {
return (isset($item) && !empty($item));
}
传入未设置的变量时,请以此为例:
$args = ['derp'];
if(set($args[0]) || $args[1]) {....
我收到一条抛出的通知,指出"Offset 1
未设置,但当我将该函数更改为注释$item
时,它会删除PHP注意:
function set(&$item) {
return (isset($item) && !empty($item));
}
我的问题是这是怎么回事?是因为它引用了原始的$args
数组吗?我疯了吗?
答案 0 :(得分:5)
当函数采用by-reference参数时,在调用时禁用有关未定义的警告。这是因为该函数可能用于分配变量,因此传递未定义的变量或不存在的索引不是错误。例如,假设你有一个像:
这样的函数function setTo3 (&$arg) {
$arg = 3;
}
setTo3($array[1]);
没有理由警告$array[1]
没有被定义,因为setTo3()
从不使用参数的值。