Сравните 2 разных условия с одной и той же идеей

У меня вопрос: в чем разница между: $value !='' и !isset($value)?


person Harea Costicla    schedule 19.05.2016    source источник
comment
$value != '' может вернуть уведомление, если $value не был объявлен. !isset($value) не вернет уведомление.   -  person Henders    schedule 19.05.2016
comment
как лучше всего использовать: isset или! = ''? @Henders   -  person Harea Costicla    schedule 19.05.2016
comment
Для чего? Что ты пытаешься сделать? Если вы просто хотите проверить, установлен ли $value, используйте isset(), потому что он для этого. Это не значит, что это что-то иное, чем заявленное.   -  person Henders    schedule 19.05.2016
comment
@HareaCosticla, если люди отвечают на ваши вопросы, попробуйте проголосовать / принять их, по крайней мере, прокомментируйте, чтобы другие люди узнали, почему вы не приняли ответы ??   -  person Hirdesh Vishwdewa    schedule 24.05.2016


Ответы (3)


Основное различие в практическом использовании между $value != '' и !isset($value) заключается в том, что вы можете использовать isset() следующим образом:

if(!isset($value)){
    echo '$value is not declared or is equal to null';
}

Если $value на самом деле не установлен, вы не получите уведомления с isset(). Если бы вы сделали что-то вроде этого:

if($value != ''){
    echo $value." is not equal to nothing"; 
}

Если $value не установлен, это вызовет уведомление в PHP, объясняющее, что $value еще не объявлен.

Следует отметить, что isset() проверит, что переменная была объявлена, но не будет проверять, что она не равна ''.


А как насчет empty()?

Другой частью головоломки здесь является empty(), который проверяет, объявлена ​​ли переменная и не равна ли ''. Вы можете сделать что-то вроде этого:

if(!empty($value)){
    echo 'We know that $value is declared and not equal to nothing.';
}

что было бы то же самое, что сделать это:

if(isset($value) && $value != ''){
    echo 'We know that $value is declared and not equal to nothing.';
}

Дополнительная литература:

isset() - Документы PHP

empty() - Документы PHP

isset, пустые проверки - аналогичный вопрос

Зачем проверять как isset, так и пусто?

Все эти примеры работают в PHP 5.3+

person Henders    schedule 19.05.2016

$variable != '' просто проверяет переменную на пустое строковое значение (или null, потому что '' == null), если переменная не определена, будет показано уведомление.

!isset($variable) проверяет, определена ли переменная, и если она не верна, ошибки / уведомления отображаться не будут.


Но имейте в виду, что isset может вернуть false, даже если переменная определена.

$variable = null;
var_dump(isset($variable));  // prints false

Чтобы проверить, действительно ли переменная определена в текущей области, используйте 'array_key_exists' с 'get_defined_vars'

$variable = null;
var_dump(array_key_exists('value', get_defined_vars()));  // prints true
person Buksy    schedule 19.05.2016

isset () сообщит вам о существовании переменной, а не NULL.

empty () может рассказать вам как о существовании переменной, так и о ее значении.

Ex.

$var1  = "";
echo isset($var1);

Выход: - правда

Итак, чтобы проверить, установлена ​​ли переменная, используйте isset(), а если вы хотите проверить, не было ли значение переменной нулевым / пустым, используйте empty().

$value != '' означает, что вы проверяете, не является ли $value пустой строкой.

!isset($value) определить, не установлена ​​ли переменная $value и равна ли она NULL

Прочтите эти ссылки для получения дополнительной информации о isset & empty

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

http://php.net/manual/en/function.isset.php

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

person Hirdesh Vishwdewa    schedule 19.05.2016
comment
В чем разница между $value != '' и !empty($value)? - person Harea Costicla; 19.05.2016
comment
empty($value) Определить, является ли переменная $value (любого типа) пустой, а $value != '' относится к string - person Hirdesh Vishwdewa; 19.05.2016