Я новичок в концепции пустых и нулевых. Пока я пытался понять разницу между ними, я больше смущен. Я наткнулся на статью 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).
ссылку на эту ссылку для более 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
.