我的脚本有一个小问题。
我得到了严格的标准:只有变量应该通过引用传递
if( $checkDNS && ($domain = end(explode('@',$email, 2))) )
我的脚本有一个小问题。
我得到了严格的标准:只有变量应该通过引用传递
if( $checkDNS && ($domain = end(explode('@',$email, 2))) )
从PHP 手册:
这个数组是通过引用传递的,因为它被函数修改了。这意味着您必须将一个实变量传递给它,而不是一个返回数组的函数,因为只有实际变量可以通过引用传递。
所以你必须在 end 函数中使用一个变量:
$domain = explode('@',$email, 2);
if( $checkDNS && ($domain = end($domain)) )
从手册:
mixed end ( array &$array )
end
通过引用获取数组并移动内部指针。您的数组是函数输出,因此无法通过引用正确修改数组。
就像消息说的那样, end 需要一个变量,因为它的参数是一个引用。
但从 PHP 5.4 开始,您可以像这样取消引用数组:
$domain = explode('@',$email, 2)[1];
假设 $email 总是包含@
. 您应该事先确保,否则 end(...) 也会给您带来意想不到的结果。