isset () and empty () - что использовать [дубликат]




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






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



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



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


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

384   6  
PHP

6 ответов:

это зависит от того, что вы ищете, если вы просто ищете, чтобы увидеть, если он пуст просто использовать empty как он проверяет, установлен ли он, а также, если вы хотите знать, установлено ли что-то или не использовать isset.

Empty проверяет, установлена ли переменная, и если это так, она проверяет ее на null,"", 0 и т. д.

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

С empty, рассматриваются следующие вещи пусто:

  • "" (пустая строка)
  • 0 (0 как целое число)
  • 0.0 (0 как поплавок)
  • " 0 "(0 как строка)
  • NULL
  • ложные
  • 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 также сочетает в себе чек на truthiness значения. empty эквивалентно !isset($var) || !$var и !empty is эквивалентно isset($var) && $var или isset($var) && $var == true.

если вы только хотите проверить переменную, что должны существовать на truthiness,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 возможностей: undeclared, 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
   }
}

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

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

Comments

    Ничего не найдено.