I have a small issue with my script.
I'm getting Strict Standards: Only variables should be passed by reference in
if( $checkDNS && ($domain = end(explode('@',$email, 2))) )
-
possible duplicate of Strict Standards: Only variables should be passed by referenceLorenz Meyer– Lorenz Meyer2014年06月21日 08:32:58 +00:00Commented Jun 21, 2014 at 8:32
3 Answers 3
From the PHP manual:
This array is passed by reference because it is modified by the function. This means you must pass it a real variable and not a function returning an array because only actual variables may be passed by reference.
So you must use a variable in the end function:
$domain = explode('@',$email, 2);
if( $checkDNS && ($domain = end($domain)) )
Comments
From the manual:
mixed end ( array &$array )
end
takes the array by reference and move the internal pointer. Your array is the function output, so its unable to correctly modify the array by reference.
Comments
Like the message says, end expects a variable because its parameter is a reference.
But since PHP 5.4 you can dereference arrays like that:
$domain = explode('@',$email, 2)[1];
Assuming that $email always contains @
. You should assure that beforehand, otherwise end(...) would give you unexpected results too.