Как работает запись if($var){ … } или if(!$var){ … }?

284
06 марта 2017, 13:12

Друзья всем привет!!! помогите разобраться раз и навсегда с этой записью, до сих пор сильно путаюсь, благодарю вас заранее.

Что означает запись if($var) { echo "Hello"; }

Или запись if(!empty($var)) { echo "Hello"; }

Я понимаю например запись

if(!empty($var) == TRUE) {
    echo "Hello";
} else {
    echo "Bye bye";
}

объясните разницу и как это работает? И где в короткой записи else использовать? Спасибо!

Answer 1

1.

if($var) { echo "Hello"; }

означает, что если значение $var можно привести к TRUE, то будет выполнена команда echo "Hello". Смотрите последний столбце таблицы:

2.

if(!empty($var)) { echo "Hello"; }

означент, что при не пустом значении переменной $var, будет выполнена команда echo "Hello".

Больше информации в таблице сравнения типов в PHP Обратите внимание на гибкое сравнение и жесткое сравнение.

3.

И где в короткой записи else использовать?

if($var) { echo "Hello"; } else { echo "Bye-Bye!"; }

хотя лучше так (тернарный оператор):

echo ($var ? "Hello" : "Bye-Bye!");
Answer 2

Выражение вида $var == true, вы воспринимаете его как обязательную часть if(). Но это не так. Поймите следующее: == это такое-же действие, как сложение или умножение:

$var = 5 + 3; //var = 8
$var = 5 * 3; //var = 15
$var = 5 == 3; //var = FALSE
$var = 5 > 3; //var = TRUE
$var = TRUE or FALSE; //var = TRUE

По сути PHP просто выполняет ваше выражение, не заботясь о том, какие там операторы, сложение, умножение или сравнение.

После того как все логические и арифметические действия выполнены, в if() уходит результат этих вычислений, TRUE или FALSE.

Answer 3

По умолчанию в подобного рода условиях проверяется истина. Т.е. запись if(!empty($var)) идентична if(!empty($var) == TRUE) по смыслу. Т.е. if(!empty($var)) читается как "Если в переменной не пусто, то".

Answer 4

Запись

if($var) { echo "Hello"; }

аналогична

  if($var == true) { echo "Hello"; }

Запись

if(!empty($var)) { echo "Hello"; }

аналогична

if(!empty($var)==true) { echo "Hello"; }

или

if(empty($var)==false) { echo "Hello"; }

В "короткой" записи else ставите так же, как в "длинной":

if(!empty($var)){
  echo "Hello";
} else{
  echo "Bye bye";
}
READ ALSO
$_POST зависит от чекбокса

$_POST зависит от чекбокса

Доброго времени суток, из select выбирается значение, switch определяет какое действие выполнятьВ форме вместе с select есть чекбокс

242
Не работает Cron, в Laravel 5.4 + Docker

Не работает Cron, в Laravel 5.4 + Docker

Обновили Laravel 53 до Laravel 5

372
unicode to decimal in php

unicode to decimal in php

Ребята, подскажите как конвертировать unicode в decimal?

264