Разница между isset() и empty() в php

Я хочу проверить, является ли понедельник выходным, если да, присвойте значение $ts, иначе перейдите во вторник.

  if (isset($list->hours_from_MON)) {
            $ts = $list->hours_from_MON;

        } else  (isset($list->hours_from_TUE)) {
            $ts = $list->hours_from_TUE;

Данные в базе данных имеют вид {"hours_from_Mon":"","hours_from_Tue":"2am to 5pm"}

Here in the above case it should take ts as 2am to 5pm,but it is accepting "",i think i should use  

    if (!empty($list->hours_from_MON)) {
            $ts = $list->hours_from_MON;          

        } else  (!empty($list->hours_from_TUE)) {
            $ts = $list->hours_from_TUE;


   So that it will go to tue if,mon has no value.Am i right?Can some one help me.

person raj12    schedule 20.06.2016    source источник


Ответы (1)


  • isset() вернет TRUE, если переменная существует и имеет значение, отличное от null или false

  • empty() проверит, считается ли переменная пустой.

Вы можете использовать empty(), не проверяя, установлена ​​ли переменная, и это не вызовет предупреждения.

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

"" (an empty string)
0 (0 as an integer)
0.0 (0 as a float)
"0" (0 as a string)
NULL
FALSE
array() (an empty array)
$var; (a variable declared, but without a value)
person Álvaro Guimarães    schedule 20.06.2016
comment
Поэтому, чтобы проверить, существует ли hours_from_MON или нет, я должен использовать isset? - person raj12; 20.06.2016
comment
Если hours_from_MON всегда есть и значение меняется между пустой строкой и допустимым значением, вы должны использовать пусто. - person Álvaro Guimarães; 20.06.2016
comment
хорошо, но иногда я могу даже не найти hours_from_MON, в этом случае, если я использую пустой, он работает - person raj12; 20.06.2016
comment
потому что empty() также проверит, установлена ​​ли переменная. И если это не так, это не вызовет предупреждения. - person Álvaro Guimarães; 20.06.2016
comment
Вот удобная диаграмма. - person mkasberg; 20.06.2016