Test HTTP Requests Tools Blog PHP Quiz API Log In With Github
Test HTTP Requests Tools Blog PHP Quiz API Log In With Github
« Return to the tutorials list
We have updated the website and our policies to make sure your privacy rights and security are respected.
Click here to learn more about the way our website handles your data.

Remove this message.

You can read this article in: English :: Español :: русский

Сравнение is_null, empty и isset... Урок, который должны усвоить все программисты на PHP

Daniel Gheorghe Difficulty: 25 / 50 Tweet
empty tin can

В PHP проверка переменных может быть реализована многими путями. Есть функции проверки типа данных вроде is_array, is_object или is_bool, есть функции, которые могут проверить соответствие нескольким условиям одновременно. Сегодня мы поговорим о различиях между is_null(), empty() и isset(). Для начала давайте разберемся, что каждая из них делает.

is_null()

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

Давайте рассмотрим пример:

  
    <?php
      $myvar = NULL; is_null($myvar); // возвращает TRUE
      $myvar = 0; is_null($myvar); // возвращает FALSE
      $myvar = FALSE; is_null($myvar); // возвращает FALSE
      $myvar = '';  is_null($myvar); // возвращает FALSE
      is_null($some_undefined_var); // возвращает TRUE ... но выдает сообщение о том, что переменной $some_undefined_var не существует
  

Пожалуйста, обратите внимание, что нулевая переменная - не то же самое, что и неопределенная. При том, что они обе возвращают NULL, PHP выдает предупреждающее сообщение: "Notice: Undefined variable: X in..."

isset()

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

Это объяснение может быть несколько запутано, но приведенный ниже пример пояснит, что я имею ввиду:

  
    <?php
      $myvar = NULL; isset($myvar); // возвращает FALSE
      $myvar = 0; isset($myvar); // возвращает TRUE
      $myvar = FALSE; isset($myvar); // возвращает TRUE
      $myvar = '';  isset($myvar); // возвращает TRUE
      isset($some_undefined_var); // возвращает FALSE
  

empty()

Эта функция проверяет переменную на "ложное" в терминах PHP (пустое) значение. Переменная будет считаться пустой, если она не определена, NULL, FALSE, 0 или содержит пустую строку.

Чтобы яснее себе представить как работает empty()... вы должны представить результат, возвращаемый !isset($var) || $var==false.

Например:

  
    <?php
      $myvar = NULL; empty($myvar); // возвращает TRUE
      $myvar = 0; empty($myvar); // возвращает TRUE
      $myvar = FALSE; empty($myvar); // возвращает TRUE
      $myvar = '';  empty($myvar); // возвращает TRUE
      empty($some_undefined_var); // возвращает TRUE
  

В заключение хочется напомнить вам о необходимости ВСЕГДА проверять переменные. В PHP, который не является строго типизированным языком программирования, очень важно, чтобы программист уделял этому особое внимание.