В чем разница между этими четырьмя операторами PHP?
if (isset($data)) {
if (!empty($data)) {
if ($data != '') {
if ($data) {
Все ли они делают то же самое?
В чем разница между этими четырьмя операторами PHP?
if (isset($data)) {
if (!empty($data)) {
if ($data != '') {
if ($data) {
Все ли они делают то же самое?
if (isset($data)) {
Просто установлена переменная - перед этой строкой мы объявили новую переменную с именем 'data', т.е. $data = 'abc';
if (!empty($data)) {
Переменная заполняется данными. У него не может быть пустого массива, потому что тогда $data
имеет тип массива, но по-прежнему не имеет данных, т.е. $data = array(1); Не может быть нулевым, пустой строкой, пустым массивом, пустым объектом, 0 и т. д.
if ($data != '') {
Переменная не является пустой строкой. Но также не может быть пустым значением (примеры выше).
Если мы хотим сравнить типы, используйте !==
или ===
.
if ($data) {
Переменная заполняется любыми данными. То же, что и !empty($data)
.
empty()
противоположно (boolean) var
, за исключением того, что предупреждение не генерируется, если переменная не установлена. См. также этот ответ.
- person Stan Sidel; 02.06.2015
Ознакомьтесь с руководством по PHP: http://www.php.net/manual/en/types.comparisons.php
Expression gettype() empty() is_null() isset() if($x) $x = ""; string TRUE FALSE TRUE FALSE $x = null; NULL TRUE TRUE FALSE FALSE var $x; NULL TRUE TRUE FALSE FALSE $x undefined NULL TRUE TRUE FALSE FALSE $x = array(); array TRUE FALSE TRUE FALSE $x = false; boolean TRUE FALSE TRUE FALSE $x = true; boolean FALSE FALSE TRUE TRUE $x = 1; integer FALSE FALSE TRUE TRUE $x = 42; integer FALSE FALSE TRUE TRUE $x = 0; integer TRUE FALSE TRUE FALSE $x = -1; integer FALSE FALSE TRUE TRUE $x = "1"; string FALSE FALSE TRUE TRUE $x = "0"; string TRUE FALSE TRUE FALSE $x = "-1"; string FALSE FALSE TRUE TRUE $x = "php"; string FALSE FALSE TRUE TRUE $x = "true"; string FALSE FALSE TRUE TRUE $x = "false"; string FALSE FALSE TRUE TRUE
Как видите, if(!empty($x))
равно if($x)
, а if(!is_null($x))
равно if(isset($x))
. Что касается $data != ''
, то это TRUE
, если $data
не NULL
, ''
, FALSE
или 0
(нечеткое сравнение).
Они не одинаковы.
true, если переменная установлена. переменная может быть установлена пустой, и это будет правдой.
true, если переменная установлена и не равна пустой строке, 0, '0', NULL, FALSE, пустому массиву. это явно не то же самое, что isset
.
если переменная не равна пустой строке, если переменная не установлена, это пустая строка.
если переменная приводит к истинности, если переменная не установлена, она приводит к ложности.
if (isset($data)) — определяет, установлена ли переменная (не делала ставку 'unset()'
и не NULL
.
if (!empty($data)) — это независимая от типа проверка на пустое значение, если $data имеет значение '', 0, false или NULL, она вернет true.
if ($data != '') { это безопасный строковый тип проверки того, не равен ли $data пустой строке
if ($data) { это поиск истинного или ложного (иначе: 0 или 1)
if ($data) { this is a looking for true or false (aka: 0 or 1)
‹- не совсем правильно. Это будет true, если $data
содержит что-то, что не разрешается в false (по сути то же самое, что и !empty($data)
)
- person Blair McMillan; 08.12.2009