Пример Empty (PHP) - почему и как?

PHPОдна из самых часто используемых конструкций языка, но при этом много раз видел неправильно использование этой конструкции при всей ее простоте для понимания.



Для чего нужна конструкция 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 немного изменено привычное поведение конструкции, советую почитать официальную документацию.


Скачать пример PHP EMPTY

Случайные статьи

Статья Новый эпизод для Resident Evil 5 добавлена с разрешения редакции сайта Игромания.Автор: Андрей Чаплюк. Продолжают появляться подробности о специальном расширенном издании R...

Линейка HTC One - одна из самых симпатичный и мощных линеек коммуникаторов на данный момент. Первый из рассмотренных нами будет HTC One V....

Оригинал статьи можно прочесть перейдя по ссылке E3: "Красное кольцо смерти" уйдет в прошлое на сайте "Игромания".Видно Red Ring оf Death или "Красное кольцо смерти" – эта фраза си...

Статья Кратос подружился с пришельцами добавлена с разрешения редакции сайта Игромания.Автор: Андрей Чаплюк. Представители Sony приготовили для фанатов приятный сюрприз. Компания ...

Статья Якудза наступает! добавлена с разрешения редакции сайта Игромания.Автор: Роман Епишин.В этом месяце состоится западный релиз экшена Yakuza 3 для PS3, в Японии появится Yak...