Ответ
В PHP есть несколько ключевых операторов и функций для проверки переменных:
isset()— проверяет, была ли переменная объявлена и не равна лиnull. Возвращаетfalseдляnullи для необъявленных переменных, не вызывая при этом ошибки.empty()— проверяет, является ли значение переменной "пустым". Возвращаетtrueдляfalse,0,0.0,"","0",null, пустого массива[]и необъявленных переменных.is_null()— строго проверяет, равно ли значение переменнойnull. Вызов на необъявленной переменной вызовет предупреждение.array_key_exists()— проверяет наличие ключа в массиве, даже если его значение равноnull. В отличие отisset($array['key']), которая вернетfalseдля ключа со значениемnull.
Примеры и различия:
$var = null;
$arr = ['key' => null];
var_dump(isset($var)); // false (переменная равна null)
var_dump(isset($undefined)); // false (переменная не объявлена)
var_dump(empty($var)); // true
var_dump(is_null($var)); // true
var_dump(isset($arr['key'])); // false (значение null)
var_dump(array_key_exists('key', $arr)); // true (ключ существует)
Практический совет: Использую isset() для безопасной проверки наличия переменной (например, в $_GET или $_POST), empty() для проверки на "не заполнено", а array_key_exists() когда нужно отличить отсутствующий ключ от ключа со значением null.
Ответ 18+ 🔞
Э, слушай, давай разберём эту пиздопроебибну с проверками в PHP, а то тут, бля, волнение ебать, как новички путаются. Ситуация, как будто на дворе 2002-й год, и все лезут в код с кривыми условиями.
Вот смотри, есть у тебя несколько инструментов, и каждый — как ключ от определённого замка. Если начать is_null() тыкать куда попало, будет тебе хиросима и нигерсраки в логах.
isset() — это наш основной кореш. Он проверяет, объявлена ли переменная вообще и не равна ли она null. Самое классное — если переменной нет, он не орёт ошибкой, а просто молча возвращает false. Идеально для проверки, пришло ли что-то из формы или из $_GET. Типа страховка от "хуй с горы".
empty() — это уже построже. Он возвращает true не только для null или необъявленной хуйни, но и для всего, что считается "пустым": false, ноль, пустая строка, строка "0" (да, вот этот подвох, ядрёна вошь!), и пустой массив. По сути, он отвечает на вопрос "а есть ли тут хоть что-то полезное?".
is_null() — это, чувак, снайпер. Он строго и только проверяет, равно ли значение null. Но тут засада: если передать ему необъявленную переменную, он начнёт ныть предупреждением. Так что используй его, только когда уверен, что переменная существует.
array_key_exists() — а вот это хитрая жопа для работы с массивами. isset($arr['key']) спасёт, если ключа нет, но она же свалит в false, если ключ есть, а значение — null. А array_key_exists() честно скажет: "Да, ключ существует, просто в нём хуй в пальто лежит". Разница тонкая, но важная.
Вот, смотри на примерах, чтобы в голове уложилось:
$var = null;
$arr = ['key' => null];
var_dump(isset($var)); // false (потому что null)
var_dump(isset($undefined)); // false (переменной нет, но ошибки нет — красота!)
var_dump(empty($var)); // true (потому что null — это пустота)
var_dump(is_null($var)); // true (строго проверяем на null)
var_dump(isset($arr['key'])); // false (ключ есть, но значение null)
var_dump(array_key_exists('key', $arr)); // true (а вот так мы узнаем, что ключ-то есть!)
Итог, блядь, простой:
Для безопасности входящих данных — isset() твой бро.
Чтобы проверить "а не пустое ли тут всё?" — empty().
Нужно докопаться строго до null в известной переменной — is_null().
А ковыряешься в массивах и нужно отличить отсутствующий ключ от null — твой выбор array_key_exists().
Выбери не тот инструмент — и прощай, логическая целостность, доверия ебать ноль.