2013-01-21 95 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]; 

假設$電子郵件始終包含@。你應該事先保證,否則結束(...)也會給你意想不到的結果。