Уроки PHP – Когда использовать isset(), empty() и is_null() в PHP

Довольно часто, при написании PHP кода, возникают ситуации, когда рабочий на вид код не работает. После некоторых изысканий, вы обнаруживаете, что использовали неправильную функцию для проверки переменной в PHP. Существует много функций в PHP, которые предназначены для проверки состояния и значения переменных, в том числе те, которые могут уведомлять вас, есть ли какое-то значение, доступное вообще для использования. Среди этих функций, выделяются особенно три: isset(), empty() и is_null(),которые легко перепутать.

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

 

 

Обзор функций isset(), empty() и is_null() в PHP

Все эти три функции встроены в PHP, поэтому при написании кода они всегда доступны для использования. Первые две – empty() и isset() – это языковые конструкции, а is_null() – это стандартная функция. При проверке кода необходимо помнить, что языковые конструкции в PHP немного быстрее (но, честно говоря, не значительно), их нельзя использовать в переменных функциях, и они не выдают ошибки при оценке переменных, которых не существует.

Давайте для начала рассмотрим синтаксис и краткое описание этих трех функций, которое указано в официальном руководстве php.net.

 

 

Функция empty()

Синтаксис функции:

<?php  empty ( mixed $var ) : bool  ?>  

 

Определяет, является ли переменная пустой. Переменная считается пустой, если она не существует или если ее значение равно FALSE. При этом, если переменная не существует, функция empty() не выдает предупреждения.

 

 

Функция isset()

Синтаксис функции:

<?php  isset ( mixed $var [, mixed $... ] ) : bool  ?>  

 



Определяет, установлена ли переменная, и не имеет ли она значение NULL.

Если переменная была сброшена (удалена) с помощью функции unset(), такая переменная больше не будет установлена. Функция isset() при тестировании (проверке) переменной вернет FALSE, если для нее установлено значение NULL. Также обратите внимание, что нулевой символ («\0«) не эквивалентен PHP константе NULL.

Если задано несколько параметров, тогда isset() вернет TRUE, но только если все параметры определены. Оценка идет слева направо и останавливается, как только встречается неустановленная переменная.

 

 

Функция is_null()

Синтаксис функции:

<?php  is_null ( mixed $var ) : bool  ?>  

 

Определяет, является ли данной переменной значение, равное NULL.

 

 

В чем отличие между функциями isset(), empty() и is_null() в PHP?

Из приведенных выше определений видно, что эти три функции выполняют сходные, но не одинаковые функции. С помощью этих функций вы можете проверять, является ли переменная нулевой (NULL), истинной (TRUE) или ложной (FALSE), а также была ли переменная объявлена.

 

 

Когда использовать функцию empty()?

При использовании empty(), вы можете проверять, является ли переменная ложной (false), но также и то, существует ли переменная. Эту функцию лучше всего использовать, когда вы хотите убедиться, что переменная существует и имеет значение, которое не равно false. Обратите внимание, что PHP будет обрабатывать пустые строки, целые числа 0, числа с плавающей запятой 0.0, пустые массивы и логическое значение false как false. Таким образом, в основном, используйте empty() только тогда, когда вы хотите убедиться, что в переменной есть какое-то фактическое значение.

Поскольку вам не нужно объявлять переменные перед их использованием в PHP, вы можете оказаться в ситуации, когда вы пытаетесь выполнить действия или запустить другую проверку для переменной, которая еще не была объявлена. Хотя по этой и другим причинам рекомендуется объявлять переменные перед использованием, эта ошибка – одна из причин того, что empty() используется не так, как isset().

 

 

Когда использовать функцию isset()?

Если вы используете isset(), вы можете специально проверять, была ли переменная уже объявлена ​​и что ее значение не равно null. Таким образом, пока у вас есть объявленная переменная, у которой установлено значение, но не значение NULL, при тесте вы получите true. Это хорошее условие для проверки, перед выполнением других проверок для выполнения действий с переменной. Пример:

<?php  $variable = 'Какая-то строка'; // Объявление переменной  // Проверка существования переменной, затем проверка значения  if ( isset($variable) && $variable !== 'Какая-то другая строка' ) {    echo 'Этот код сработает, поскольку оба условия верны';  }  ?>  

 

В приведенном выше примере мы объявили нашу переменную в виде строки, а затем проверили, установлена ли переменная (установлена), и она не равна другой строке (она не равна). Поскольку оба этих условия верны, мы в этом условии можем проводить дальнейшие действия с переменной и ее значением.

 

 

Когда использовать функцию is_null()?

Наконец, функция is_null() работает аналогично функции isset(), с одним ключевым отличием: переменная должна быть объявлена, чтобы вернулся true, даже при условии, что она объявлена без какого-либо значения или определена как NULL.

В противном случае функция is_null() не только не будет правильно работать, но и будет возвращать уведомление из-за невозможности провести проверку. Обычно уведомление выглядит примерно так:

Notice:  Undefined variable: variable in /{PATH}/ on line X  

 

Поскольку isset() является языковой конструкцией и может обрабатывать переменные, которые не были объявлены, обычно рекомендуется использовать isset() в большинстве случаев. Если вам нужно использовать is_null(), вам нужно найти другой способ функционирования вашего кода.

 

 

Какой ответ возвращают функции isset(), empty() и is_null() в PHP

В приведенной ниже таблице рассмотрены основные результаты использования данных функций в PHP коде:

Значение переменной ($var) isset($var) empty($var) is_null($var)
«» (пустая строка) bool(true) bool(true) bool(false)
» » (пробел) bool(true) bool(false) bool(false)
FALSE bool(true) bool(true) bool(false)
TRUE bool(true) bool(false) bool(false)
array() (пустой массив) bool(true) bool(true) bool(false)
NULL bool(false) bool(true) bool(true)
«0» (0 в виде строки) bool(true) bool(true) bool(false)
0 (0 в виде целого числа) bool(true) bool(true) bool(false)
0.0 (0 в виде числа с плавающей точкой) bool(true) bool(true) bool(false)
переменная $var; (переменная объявлена, но без значения) bool(false) bool(true) bool(true)

 

 

На сегодня все. Спасибо, что читаете нас!