Neo Castelli
Neo Castelli

Reputation: 91

Strict Standards php error

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

Answers (3)

Fabian Schmengler
Fabian Schmengler

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

rink.attendant.6
rink.attendant.6

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

datasage
datasage

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

Related Questions