Reputation: 91
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))) )
Upvotes: 0
Views: 227
Reputation: 24551
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.
Upvotes: 0
Reputation: 46218
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)) )
Upvotes: 3
Reputation: 19563
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.
Upvotes: 2