Если я поставлю 1 или 2 в это, он вернется 4. Почему это? Я больше привык к материалам python, так что извините, если это довольно просто.
e = 1; f=0; if(e==1){f=1;} if(e==2){f=2;} if(e== 3 or 4){f=4;} echo f;
Попробуйте заменить:
if(e== 3 or 4){f=4;}
с
if(e == 3 or e == 4){ f=4; }
Значение 4 считается TRUE
по языку. В вашем коде 1 == 3
FALSE
, поэтому оператор if смотрит (FALSE or TRUE)
равный TRUE
, поэтому f
установлен в 4.
Посмотрите на эту ссылку re: PHP Booleans
Для вашего or
заявления это то, что вы хотите:
if ( ($e == 3) || ($e == 4) ) { $f=4; }
Следующее утверждение всегда будет верно
if(e== 3 or 4)
Если вы посмотрите на boolean , вы увидите, что почти все равно true
в php ( за исключением тех значений, которые указаны на той же странице ). Так что у вас действительно есть что-то вроде этого:
if($e==3 or true)
И поскольку anything or true
всегда true
, вы получаете тот (странный, но не неожиданный) результат.
Если вы хотите проверить, равна ли $e
равным 3
или 4
, сделайте это так:
if($e==3 || $e==4){
Обратите внимание, что, поскольку это не так, if..else
, все условия проверяются. Взгляните на расширенную версию:
if($e==1){ $f=1; } if($e==2){ $f=2; } if($e==3 or 4){ $f=4; }
Это / \ отличается от
if($e==1){ $f=1; }elseif($e==2){ $f=2; }elseif($e==3 or 4){ $f=4; }
Поскольку последний проверяет каждое условие в случае, если ни один из предыдущих не подходит.
Другая сторона примечания. Так как вам нравится python, этот код можно преобразовать в эту единственную строку:
$f = ($e==3 || $e==4) ? 4 : $e;