Бывают ситуации, когда при замене isset() на !empty() код отрабатывает на отлично. Подобные ситуации создают иллюзию взаимозаменяемости этих функций, однако… Не ведитесь, господа, на иллюзии! А лучше взгляните на список различий и почувствуйте благодарность к создателям php за его логичность! Сравним, в каких случаях isset(Переменная) и !empty(Переменная) возвращают true:
- Переменная не равна null
Добиться одобряющего ответа в виде true от конструкции !empty(Переменная) сложнее.
- Переменная не равна null;
- Переменная не равна false;
- Переменная не равна « », т. е. пустой сторке;
- Переменная не равна нулю, (0) и символу нуля в строке «0»;
- Переменная не равна пустому массиву array().
То есть, в то время, когда функция isset() довольствуется коробкой с надписью «Торт» и возможностью пощупать эту коробку, если коробка не null, то дама с восклицательным знаком !empty() обязательно заглянет под крышку торта и проверит, а не пустышку ли ей подложили вместо торта — может там вообще лежит баранка или обертки от конфет.
Итак, с различиями мы разобрались, пришло время проверить работу функций на практике:
Создадим переменную $tort и присвоим переменной значение «15». Если функция isset($tort) или !empty($tort) возвращает true, то на экран выводится сообщение : «Торт есть, будем есть», в противном случае сообщение будет: «Торта нет, идем отсюда»:
<?php
$tort=15;
echo "</br>Сравниваем, как отрабатывают функции для переменной = ".$tort;
if(isset($tort))
echo "</br>isset: торт есть, будем есть";
else
echo "</br>isset: торта нет, идем отсюда";
if(!empty($tort))
echo "</br> empty: торт есть, будем есть";
else
echo "</br>empty: торта нет, идем отсюда";
?>
В этом случае функции отработают одинаково и хором пригласят вас к столу:
Сравниваем, как отрабатывают функции для переменной = 15 isset: торт есть, будем есть empty: торт есть, будем есть
Расширим эксперимент и поиграемся с переменной $tort, пробуя присваивать ей разные значения. В итоге получим такой результат:
Результат работы функций <strong>для</strong> <strong>переменной = 0</strong> isset: торт есть, будем есть empty: торта нет, идем отсюда А теперь <strong>для переменной = array()</strong> isset: торт есть, будем есть empty: торта нет, идем отсюда Сравниваем, как отрабатывают функции <strong>для переменной = null</strong> isset: торта нет, идем отсюда empty: торта нет, идем отсюда
Ниже расположен полный код файла с экспериментами:
$tort=15;
echo "</br></br>Сравниваем, как отрабатывают функции для переменной = ".$tort;
if(isset($tort))
echo "</br>isset: торт есть, будем есть";
else
echo "</br>isset: торта нет, идем отсюда";
if(!empty($tort))
echo "</br> empty: торт есть, будем есть";
else
echo "</br>empty: торта нет, идем отсюда";
$tort=0;
echo "</br></br>Сравниваем, как отрабатывают функции для переменной = ".$tort;
if(isset($tort))
echo "</br>isset: торт есть, будем есть";
else
echo "</br>isset: торта нет, идем отсюда";
if(!empty($tort))
echo "</br> empty: торт есть, будем есть";
else
echo "</br>empty: торта нет, идем отсюда";
$tort = array();
echo "</br></br>Сравниваем, как отрабатывают функции для переменной = array()";
if(isset($tort))
echo "</br>isset: торт есть, будем есть";
else
echo "</br>isset: торта нет, идем отсюда";
if(!empty($tort))
echo "</br> empty: торт есть, будем есть";
else
echo "</br>empty: торта нет, идем отсюда";
$tort=null;
echo "</br></br>Сравниваем, как отрабатывают функции для переменной = null";
if(isset($tort))
echo "</br>isset: торт есть, будем есть";
else
echo "</br>isset: торта нет, идем отсюда";
if(!empty($tort))
echo "</br> empty: торт есть, будем есть";
else
echo "</br>empty: торта нет, идем отсюда";