2013-01-21 81 views
0

我的脚本有一个小问题。严格的标准php错误

我越来越严格的标准:只有变量应该按引用传递在

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

[严格标准:只有变量应通过引用传递]的可能重复(http://stackoverflow.com/questions/2354609/strict-standards-only-variables-should-be-passed-by-reference) –

回答

3

PHP manual

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

所以你必须在最后函数中使用的变量:

$domain = explode('@',$email, 2); 
if($checkDNS && ($domain = end($domain))) 
+0

这项工作。谢谢。 –

2

从手册:

mixed end (array &$array) 

end需要通过引用数组并移动内部指针。你的数组是函数输出,所以它无法通过引用正确修改数组。

0

像有消息称,年底预计变量,因为它的参数是一个参考。

但由于PHP 5.4,你可以解引用数组这样的:

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

假设$电子邮件始终包含@。你应该事先保证,否则结束(...)也会给你意想不到的结果。