Строгая стандартная ошибка php

У меня небольшая проблема с моим скриптом.

Я получаю строгие стандарты: только переменные должны передаваться по ссылке в

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

Solutions Collecting From Web of "Строгая стандартная ошибка php"

Из руководства по PHP :

Этот массив передается по ссылке, потому что он модифицируется функцией. Это означает, что вы должны передать ему реальную переменную, а не функцию, возвращающую массив, потому что только фактические переменные могут передаваться по ссылке.

Таким образом, вы должны использовать переменную в конце функции:

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

Из руководства:

 mixed end ( array &$array ) 

end берет массив по ссылке и перемещает внутренний указатель. Ваш массив – это выход функции, поэтому он не может правильно изменить массив по ссылке.

Как говорится в сообщении, end ожидает переменную, потому что ее параметр является ссылкой.

Но поскольку PHP 5.4 вы можете разыменовывать массивы следующим образом:

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

Предполагая, что $ email всегда содержит @ . Вы должны заверить, что заранее, иначе конец (…) также даст вам неожиданные результаты.