В чем разница между 'isset()' и '!empty ()' в PHP?

Я не понимаю разницы между isset() и !empty().

потому что если переменная была установлена, разве это не то же самое, что не быть пустым?

6 ответов


isset и проверяет переменную, чтобы узнать, установлена ли она. Другими словами, он проверяет, является ли переменная любым значением, кроме NULL или не присвоено значение. ISSET возвращает TRUE если переменная существует и имеет значение, отличное от null. Это означает, что переменные, назначенные"", 0, " 0 " или FALSE, установлены и, следовательно, являются TRUE на ISSET.

пустой проверяет, пуста ли переменная. Пустые интерпретируется как: "" (пустая строка), 0 (integer), 0.0 (float)`, "0" (string), NULL, FALSE, array () (пустой массив) и "$var;" (объявленная переменная, но без значения в классе.

дополнительные сведения см. В разделе в этой статье


источник :http://php.net/manual/en/types.comparisons.phpНа этой странице показано сравнение empty(),is_null(),isset().

The picture showing complete comparison here


таблицы сравнения типов дают ответ на все вопросы об этих операторах

http://php.net/manual/en/types.comparisons.php


isset - определите, установлена ли переменная и не равна нулю.

!empty - определите, не является ли переменная пустой.


Isset возвращает false, если переменная не была установлена или она равна null и возвращает true, если переменная была установлена, а не null.

!пустое возвращает true, если переменная была установлена, а не пуста. Пустая строка, пустой массив, "0",0 и false определяются как пустые.


и еще одно замечание. empty() проверяет, существует ли переменная. Т. е. если мы выполним empty() переменной, которая не была объявлена, мы не получаем ошибку empty() возвращает 'true'. Поэтому мы можем избежать isset() если Далее нам нужно проверить, пуста ли переменная.

так

isset($var) && !empty($var)

будет равна

!empty($var)