Не могли бы вы помочь мне улучшить мой стиль кодирования? :) В некоторых задачах мне нужно проверять - переменная пуста или что-то содержит. Для решения этой задачи я обычно делаю следующее.
Проверьте - задана эта переменная или нет? Если установлен - проверяю - пусто или нет?
<?php
$var = '23';
if (isset($var)&&!empty($var)){
echo 'not empty';
}else{
echo 'is not set or empty';
}
?>
И у меня вопрос - следует ли использовать isset () перед empty () - это необходимо? TIA!
Ответы:
Это зависит от того, что вы ищете, если вы просто хотите увидеть, пусто ли оно, просто используйте,
empty
когда он проверяет, установлен ли он, если вы хотите знать, установлено ли что-то или не используетсяisset
.Empty
проверяет, установлена ли переменная, и если это так, проверяет ее на null, "", 0 и т. д.Isset
просто проверяет, установлен ли он, это может быть что угодно, кроме нуляС
empty
пустыми считаются следующие объекты:С http://php.net/manual/en/function.empty.php
Как упоминалось в комментариях, отсутствие предупреждения также важно с empty ()
Руководство по PHP говорит
Что касается isset
Руководство по PHP говорит
Ваш код будет в порядке:
Например:
источник
empty
: он не выдает предупреждения, когда проверяемая переменная не существует. В этом весь смысл этой функции, в остальном она идентична== false
.isset
для нулевой (и существующей) переменной будет вычисляться значениеfalse
.В вашем конкретном случае:
if ($var)
.Вам нужно использовать,
isset
если вы не знаете , существует ли переменная или нет. Поскольку вы объявили его в самой первой строке, вы знаете, что он существует, поэтому вам не нужно, нет, не следует использоватьisset
.То же самое
empty
, только вempty
сочетании с проверкой истинности значения.empty
эквивалентно!isset($var) || !$var
и!empty
эквивалентноisset($var) && $var
, илиisset($var) && $var == true
.Если вы хотите только проверить переменную, которая должна существовать на истинность ,
if ($var)
это совершенно адекватно и по существу.источник
!empty is equivalent to isset($var) && $var
, это будет здорово. Спасибо @decezeВы можете просто использовать empty () - как показано в документации , он вернет false, если переменная не имеет значения.
Пример на той же странице:
Вы можете использовать isset, если просто хотите знать, не является ли оно NULL. В противном случае кажется, что empty () можно использовать отдельно.
источник
$var = null; isset( $var ) == true
.Вот выходы
isset()
иempty()
для 4 возможности: необъявленные, NULL, ложного и правды.Вы заметите, что все результаты «isset» противоположны «пустым» результатам, за исключением case
$b=false
. Все значения (за исключением null, который не является значением, а не значением), которые оцениваются как false, вернут true при проверке на byisset
и false при проверке на 'empty'.Так что используйте,
isset()
когда вас беспокоит существование переменной. И используйте,empty
когда вы проверяете истинность или ложь. Если фактический тип вопросов пустоты, использованияis_null
и===0
,===false
,===''
.источник
Empty возвращает true, если переменная не установлена. Но isset возвращает true, даже если переменная не пуста.
источник
Это простой пример. Надеюсь, поможет.
edit: добавлено
isset
в случае, если переменная не определена, как указано выше, это вызовет ошибку, проверяя, поможет ли ее первый набор, по крайней мере, устранить некоторую головную боль в будущем.источник
strlen
под нулем? Я хочу увидеть эту строку.