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

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

Ответ 1

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

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

Считается, что пусто:

  • "(пустая строка)
  • 0 (0 как целое число)
  • 0.0 (0 в качестве поплавка)
  • " 0" (0 в виде строки)
  • NULL
  • FALSE
  • array() (пустой массив)
  • var $var; (объявленная переменная, но без значения в классе)

Источник.


Пример

$a - NULL.

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


Update

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

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

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

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

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

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

Ответ 2

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

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

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

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

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

Ответ 3

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

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

Ответ 4

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

Подробнее о empty() см. http://php.net/manual/en/function.empty.php

Ответ 5

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

isset($_POST['username'])

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

empty($_POST['username'])

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

Ответ 6

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

В SQL базы данных NULL означает "нет значения".

Ответ 7

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

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

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

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

Ответ 8

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

  • Переменная определена и еще не установлена.
  • В переменной есть ненулевое значение.

Переменная автоматически определяется, когда она получает что-то (включая 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 been unset!

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

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

Ответ 9

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

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

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