0

我的脚本有一个小问题。

我得到了严格的标准:只有变量应该通过引用传递

if( $checkDNS && ($domain = end(explode('@',$email, 2))) )
4

3 回答 3

3

PHP 手册

这个数组是通过引用传递的,因为它被函数修改了。这意味着您必须将一个实变量传递给它,而不是一个返回数组的函数,因为只有实际变量可以通过引用传递。

所以你必须在 end 函数中使用一个变量:

$domain = explode('@',$email, 2);
if( $checkDNS && ($domain = end($domain)) )
于 2013-01-21T22:28:07.743 回答
2

从手册:

mixed end ( array &$array )

end通过引用获取数组并移动内部指针。您的数组是函数输出,因此无法通过引用正确修改数组。

于 2013-01-21T22:27:23.720 回答
0

就像消息说的那样, end 需要一个变量,因为它的参数是一个引用。

但从 PHP 5.4 开始,您可以像这样取消引用数组:

$domain = explode('@',$email, 2)[1];

假设 $email 总是包含@. 您应该事先确保,否则 end(...) 也会给您带来意想不到的结果。

于 2013-01-21T22:33:51.887 回答