Одна из самых часто используемых конструкций языка, но при этом много раз видел неправильно использование этой конструкции при всей ее простоте для понимания.
Для чего нужна конструкция empty в языке PHP? Empty() используется для проверки элементов на существования значения в переменной, при этом на проверка на значение отличное от null, 0, '' и тд. При этом выполняется проверка и на существование самой переменной, элемента, объекта. И самая частая ошибка при ее использовании это использование ее вместе с конструкцией isset:
if(isset($element['name']) AND !empty($element['name']))
В итоге получается, что Вы выполняете лишнюю проверку, так как проверка на empty включает себе проверку и на isset.
Еще один важный момент и наверное самый важный, заключается он в том, что использовать данную конструкцию необходимо в случае проверки вложенных элементов (массив или объект), когда возможна генерация ошибки в случае его отсутствия (к примеру E_NOTICE).
Постараюсь объяснить на примере:
if(!empty($name))
и
if($name)
Эти примеры эквивалентны и использовать первый вариант нужно только в том случае если уровень ваших ошибок настроен таким образом, что без объявления переменной так же генерируется ошибка.
Конструкция empty по своему подавляет ошибки (E_NOTICE), при этом генерация ошибок не выполняется, что положительно сказывается на производительности скрипта.
Правильное использование:
if(!empty($element['name']))
Неправильная проверка
if($element['name'])
Почему второй вариант не правильный? Потому что в случае не существования элемента массива name, будет сгенерирована ошибка E_NOTICE, ВНИМАНИЕ даже если вывод ошибок отключен. Поэтому правильно и использовать первый вариант.
На последок хочу обратить Ваше внимание на то, что в версии PHP 5.4 немного изменено привычное поведение конструкции, советую почитать официальную документацию.
