Уроки 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)

 

 

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

 

Recent Posts

Почему стоит выбрать ноутбук Apple MacBook Pro 14 для современных ИТ-задач

Выбор рабочей машины для веб-разработчика или администратора серверов — является всегда компромиссом между портативностью, автономностью…

3 дня ago

Google теряет монополию: Как подготовить IT-сайт к AI-поиску (GEO)

Что вообще случилось с поиском в интернете? Я не побоюсь сказать это вслух: произошла настоящая…

3 недели ago

Прокси для соцсетей и Facebook — Как избежать бана аккаунтов

Представьте, что вас внесли в черный список элитного клуба. Если вы подойдете к фейс-контролю лично…

3 недели ago

Антидетект-браузеры для начинающих: что это такое и как совместить с прокси

Анонимность и разделение аккаунтов является базовой потребностью для сотрудников, занимающихся арбитражем трафика, SMM или мультиаккаунтингом.…

1 месяц ago

Когда точно пора сдать старый катализатор для выгодной продажи

Некоторые запчасти в автомобилях мы эксплуатируем до того момента, пока они полностью не выйдут из…

1 месяц ago

Как онлайн-мониторинг цен конкурентов помогает бизнесу в 2026 году

В 2026 году конкуренция в e-commerce стала жесткой как никогда. Клиенты выбирают не только по…

2 месяца ago