isset () и empty () – что использовать

Возможный дубликат:
Зачем проверять и isset () и! Empty ()

Не могли бы вы помочь мне улучшить стиль кодирования? 🙂 В некоторых задачах мне нужно проверить – переменная пустая или содержит что-то. Чтобы решить эту задачу, я обычно делаю следующее.

Проверить – эта переменная установлена ​​или нет? Если он установлен – я проверяю – он пуст или нет?

<?php $var = '23'; if (isset($var)&&!empty($var)){ echo 'not empty'; }else{ echo 'is not set or empty'; } ?> 

И у меня есть вопрос – следует ли использовать isset () перед empty () – это необходимо? ТИА!

Solutions Collecting From Web of "isset () и empty () – что использовать"

Это зависит от того, что вы ищете, если вы просто хотите посмотреть, пуст ли он просто empty поскольку он проверяет, установлен ли он, если вы хотите узнать, установлено ли что-то или нет.

Empty проверки, если переменная установлена, и если она проверяет ее на null, «», 0 и т. Д.

Isset просто проверяет, установлен ли он, это может быть что угодно, но не null

С empty следующие вещи считаются пустыми:

  • "" (пустая строка)
  • 0 (0 как целое число)
  • 0.0 (0 в качестве поплавка)
  • «0» (0 в виде строки)
  • НОЛЬ
  • ЛОЖНЫЙ
  • array () (пустой массив)
  • var $ var; (объявленная переменная, но без значения в классе)

С http://php.net/manual/en/function.empty.php


Как упоминалось в комментариях, отсутствие предупреждения также имеет важное значение с пустым ()

Руководство PHP

empty () – это противоположность (boolean) var, за исключением того, что предупреждение не генерируется, когда переменная не задана .

Что касается isset

Руководство PHP

isset () вернет FALSE, если тестирует переменную, которая была установлена ​​в NULL


Ваш код будет в порядке:

 <?php $var = '23'; if (!empty($var)){ echo 'not empty'; }else{ echo 'is not set or empty'; } ?> 

Например:

 $var = ""; if(empty($var)) // true because "" is considered empty {...} if(isset($var)) //true because var is set {...} if(empty($otherVar)) //true because $otherVar is null {...} if(isset($otherVar)) //false because $otherVar is not set {...} 

В вашем конкретном случае: if ($var) .

Вам нужно использовать isset если вы не знаете , существует ли переменная или нет. Поскольку вы заявили об этом на самой первой строке, вы знаете, что она существует, поэтому вам не нужно, например, не использовать isset .

То же самое происходит и для empty , только этот пул также объединяет проверку правдоподобия значения. empty эквивалентно !isset($var) || !$var !isset($var) || !$var and !empty эквивалентен isset($var) && $var или isset($var) && $var == true .

Если вы хотите протестировать переменную, которая должна существовать для правдоподобия , if ($var) является вполне адекватным и точным .

Вы можете просто использовать empty () – как видно из документации , он вернет false, если переменная не имеет значения.

Пример на той же странице:

 <?php $var = 0; // Evaluates to true because $var is empty if (empty($var)) { echo '$var is either 0, empty, or not set at all'; } // Evaluates as true because $var is set if (isset($var)) { echo '$var is set even though it is empty'; } ?> 

Вы можете использовать isset, если хотите узнать, не является ли оно NULL. В противном случае кажется пустым () просто отлично использовать в одиночку.

Пустой возвращает true, если var не установлен. Но isset возвращает true, даже если var не пуст.

Вот выходы isset() и empty() для 4 возможностей: uneclared, null, false и true.

 $a=null; $b=false; $c=true; var_dump(array(isset($z1),isset($a),isset($b),isset($c)),true); //$z1 previously undeclared var_dump(array(empty($z2),empty($a),empty($b),empty($c)),true); //$z2 previously undeclared //array(4) { [0]=> bool(false) [1]=> bool(false) [2]=> bool(true) [3]=> bool(true) } //array(4) { [0]=> bool(true) [1]=> bool(true) [2]=> bool(true) [3]=> bool(false) } 

Вы заметите, что все результаты «isset» противоположны «пустым» результатам, за исключением случая $b=false . Все значения (за исключением значения null, которое не является значением, но не значением), которое вычисляется как false, вернут true при проверке на isset и false при проверке на «пустое».

Поэтому используйте isset() когда вы беспокоитесь о существовании переменной. И используйте empty когда вы тестируете true или false. Если фактический тип пустоты имеет значение, используйте is_null и ===0 , ===false , ==='' .

 $var = 'abcdef'; if(isset($var)) { if (strlen($var) > 0); { //do something, string length greater than zero } else { //do something else, string length 0 or less } } 

Это простой пример. Надеюсь, поможет.

edit: добавлено isset в случае, если переменная не определена, как указано выше, это вызовет ошибку, проверив, будет ли ее первый набор по крайней мере помочь устранить головную боль в будущем.