В чем разница между пустым и пустым?

Я новичок в концепции пустых и нулевых. Пока я пытался понять разницу между ними, я больше смущен. Я наткнулся на статью по адресу http://www.tutorialarena.com/blog/phpisset-vs-empty.php, но я до сих пор не вижу, когда вы будете использовать isset и пустое при проверке форм. Видя, что я не понимаю разницы, я не хочу использовать неправильные функции, а также не использовать функции в других областях. Может ли кто-нибудь привести примеры, которые помогут мне понять? Я очень новичок в кодировании, так что было бы полезно, если бы кто-то мог дать мне примеры реального мира и в то же время сохранить его достаточно просто, чтобы noob мог следовать.

Переменная NULL если она не имеет значения, и указывает на отсутствие в памяти.

empty() более буквальное значение пустого , например, строка "" пуста, но не является NULL .

Следующие вещи считаются пустыми:

  • "" (пустая строка)
  • 0 (0 как целое число)
  • 0.0 (0 в качестве поплавка)
  • «0» (0 в виде строки)
  • НОЛЬ
  • ЛОЖНЫЙ
  • array () (пустой массив)
  • var $ var; (объявленная переменная, но без значения в классе)

Источник .


пример

$aNULL .

$a = '' пуст , но не NULL .


Обновить

Если $a='' пуст, но не NULL , когда я использую функцию empty() и когда я использую функцию isset() .

isset() вернет FALSE это переменная указывает на NULL .

Используйте empty() когда вы понимаете, что пусто (посмотрите на список выше).

Также, когда вы говорите, что это нигде в памяти, что это значит?

Это означает, что $str = '' будет в памяти как строка с длиной 0.

Если бы он был $str = NULL , он не занимал бы памяти.

Null – это местозаполнитель, который обычно означает «никаких данных об этом нет».

Использование null для этого – просто конвенция, но довольно распространенная, до такой степени, что некоторые языки программирования поддерживают соглашение напрямую. Причина, по которой эта конвенция существует, ИМО исторически связана с «указателями»; много раз процедура будет определена, чтобы вернуть указатель на ответ, и вернет то, что традиционно называется указателем Null, если по какой-то причине он не может дать ответ.

Пустой означает (если это набор), что у него нет членов. Это явный ответ, и он сильно отличается от «никаких данных об этом недоступно».

В мире PHP нестандартные переменные не имеют значения Null, а isset на такой переменной возвращает FALSE. Для массивов и строк PHP следует за соглашением, что «пустой» означает «не имеет членов», хотя массивы и строки не являются технически заданными.

PHP apparantly имеет такую ​​забавную идею, что 0 и 0.0 также «пустые», по PHP-дизайну. Это оскорбительно понятие «пустой» ИМХО: индивидуальные числа не являются наборами, поэтому 0 не может разумно «пустым». Это просто приводит к неясному программированию, потому что это нарушает принцип наименьшего удивления. Я уверен, что разработчики PHP будут считать, что «нуль – это пустое число», как некая смутная аналогия; но если аналогия расплывчата, зачем беспокоиться об этом? Но тогда PHP полна глупых идей.

Нижеследующая таблица является простой ссылкой на то, что эти функции вернутся для разных значений. Пустое пространство означает, что функция возвращает bool (false). введите описание изображения здесь

обратитесь к этой ссылке для получения более https://www.virendrachandak.com/techtalk/php-isset-vs-empty-vs-is_null/

NULL – это особое значение, которое явно указывает, что переменная еще не установлена ​​на какое-либо значение. Будьте осторожны с использованием функции empty() поскольку вы не можете просто определить, что переменная точно равна NULL, используя ее. Например, функция empty() вернет true, если значение int установлено равным 0. Если вам нужно убедиться, что переменная точно равна NULL используйте if($variable == NULL) .

Для получения дополнительной информации о empty() см. http://php.net/manual/en/function.empty.php

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

 isset($_POST['username']) 

Если это возвращает true, то этот запрос на сервер был результатом публикации формы, содержащей элемент ввода с именем «имя пользователя». Теперь, когда мы знаем, что у нас есть значение для этого элемента формы, мы можем видеть, имеет ли он действительное значение. empty() сообщит нам, действительно ли пользователь ввел какие-либо данные в поле, или они оставили его пустым.

 empty($_POST['username']) 

Если это возвращает true, то форма, представленная на сервере, имеет поле с именем «имя пользователя», но пользователь ничего не вводил перед отправкой формы.

Некоторое время, так как я использовал PHP, но если на других языках есть что-то, что можно сделать пустым, будет указывать на существующий объект / карту / массив, который не имеет содержимого, а null указывает на переменную, которая вообще не имеет смысла / определения (uninitialised).

В SQL базы данных NULL означает «no value».

empty() является хорошим быстрым способом увидеть, содержит ли переменная какую-либо полезную информацию …, которая для строк empty() возвращает true для строки "", а также пустую строку.

Поэтому вы можете написать что-то вроде этого:

 if (! empty($name)) echo $name; 

Подробнее см. Здесь: PHP: empty ()

isset() возвращает true, если выполняются оба этих условия:

  1. Переменная определена и еще не отменена.
  2. Переменная имеет ненулевое значение.

Переменная автоматически определяется, когда она получает что-то (включая null). Это имеет непосредственное значение в массивах.

 $a=array(); $a['randomKey']=true; $a['nullKey']=null; var_dump(isset($a['randomKey'])); // true var_dump(isset($a['nullKey'])); // true, the key has been set, set to null! var_dump(isset($a['unsetKey'])); // false ! unset($a['randomKey']); var_dump(isset($a['randomKey'])); // false ! it's been unset! использования $a=array(); $a['randomKey']=true; $a['nullKey']=null; var_dump(isset($a['randomKey'])); // true var_dump(isset($a['nullKey'])); // true, the key has been set, set to null! var_dump(isset($a['unsetKey'])); // false ! unset($a['randomKey']); var_dump(isset($a['randomKey'])); // false ! it's been unset! использования $a=array(); $a['randomKey']=true; $a['nullKey']=null; var_dump(isset($a['randomKey'])); // true var_dump(isset($a['nullKey'])); // true, the key has been set, set to null! var_dump(isset($a['unsetKey'])); // false ! unset($a['randomKey']); var_dump(isset($a['randomKey'])); // false ! it's been unset! с $a=array(); $a['randomKey']=true; $a['nullKey']=null; var_dump(isset($a['randomKey'])); // true var_dump(isset($a['nullKey'])); // true, the key has been set, set to null! var_dump(isset($a['unsetKey'])); // false ! unset($a['randomKey']); var_dump(isset($a['randomKey'])); // false ! it's been unset! использования $a=array(); $a['randomKey']=true; $a['nullKey']=null; var_dump(isset($a['randomKey'])); // true var_dump(isset($a['nullKey'])); // true, the key has been set, set to null! var_dump(isset($a['unsetKey'])); // false ! unset($a['randomKey']); var_dump(isset($a['randomKey'])); // false ! it's been unset! 

Сверху вы можете проверить, установлены ли разные поля $ _POST. Например, страница, которая была опубликована, имеет смысл, имеет имя кнопки отправки в поле $ _POST.

empty() с другой стороны, проверяет, имеет ли переменная ненулевое значение. Это означает, что значения, которые (int) передаются в 0, также возвращают false. Вы можете использовать это, чтобы узнать, есть ли в нем определенное поле $ _POST.

Эта концепция может быть лучше понята из математики. Вы когда-нибудь пробовали делить число (не ноль) на 0, используя калькулятор, например, 7/0? Вы получите результат, который выглядит как что-то такое: undefined , not a number , null и т. Д. Это означает, что операция по некоторым причинам невозможна (давайте оставим эти причины для обсуждения в другой день).

Теперь выполните следующее: 0/7. Вы получите результат 0. Это означает, что операция возможна и может быть выполнена, но вы ответ только 0, потому что после деления ничего не осталось. Существует допустимый вывод и этот вывод равен нулю.

В первом примере не только вывод был недействительным, но и выполнить операцию невозможно. Это сродни null . Второй пример сродни empty .