Чем отличается функция isset() от !empty() в PHP

Бывают ситуации, когда при замене isset() на !empty() код отрабатывает на отлично. Подобные ситуации создают иллюзию взаимозаменяемости этих функций, однако… Не ведитесь, господа, на иллюзии! А лучше взгляните на список различий и почувствуйте благодарность к создателям php за его логичность! Сравним, в каких случаях isset(Переменная) и !empty(Переменная) возвращают true:

Функция isset(Переменная) проверяет, инициализирована ли Переменная. То есть isset(Переменная) возвращает true, если Переменная объявлена и :
  1. Переменная не равна null

Добиться одобряющего ответа в виде true от конструкции !empty(Переменная) сложнее.

!empty(Переменная) возвращает true, если Переменная объявлена и :
  1. Переменная не равна null;
  2. Переменная не равна false;
  3. Переменная не равна « », т. е. пустой сторке;
  4. Переменная не равна нулю, (0) и символу нуля в строке «0»;
  5. Переменная не равна пустому массиву 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: торта нет, идем отсюда"; 

Добавить комментарий