isset () and empty () - что использовать [дубликат]
Возможные Дубликаты:
зачем проверять оба isset () и !пустой()
не могли бы вы помочь мне улучшить мой стиль кодирования?:) В некоторых задачах мне нужно проверить-является ли переменная пустой или содержит что-то. Чтобы решить эту задачу, я обычно делаю следующее.
проверить-эта переменная установлена или нет? Если он установлен-я проверяю-он пуст или нет?
<?php
$var = '23';
if (isset($var)&&!empty($var)){
echo 'not empty';
}else{
echo 'is not set or empty';
}
?>
и у меня есть вопрос-Должен ли я использовать isset () перед пустым () - это необходимо? ТИА!
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и!emptyis эквивалентно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. В противном случае он кажется пустым() просто отлично использовать в одиночку.
вот результаты
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