2015-06-10 2 views
0

Так что я просто сделал несколько случайных тестов и понял основы Приоритета и || и или операторы, но у меня возникают проблемы с пониманием, почему изменения $ F:Логические операторы и приоритет

$f = 0 || 1; 

if ($f === 1){ 
    echo "TRUE - $f"; 
}else{ 
    echo "FALSE - $f"; 
} 
$f = 0 or 1; 

if ($f === 0){ 
    echo "TRUE - $f"; 
}else{ 
    echo "FALSE - $f"; 
} 

Спасибо за некоторое представление.

ответ

0

Нормально всегда оценивать True. Причина в том, что OR означает, что это одно из значений True, это займет это.

Update на ваш новый вопрос:

Ответ таков, что "||" имеет больший приоритет, чем «или»

// The result of the expression (false || true) is assigned to $e 
// Acts like: ($e = (false || true)) 
$e = false || true; 

// The constant false is assigned to $f and then true is ignored 
// Acts like: (($f = false) or true) 
$f = false or true; 

Вы можете узнать больше на ручной сайте PHP here, который я нашел этот пример

+0

Как неловко, спасибо ха-ха , –

+0

Почему это так, что if ($ f === 0 или 1) по-прежнему оценивает true, хотя $ f пуст? –

+0

Как я могу видеть, вы новичок здесь, поэтому, если этот ответ решает вашу проблему, пожалуйста, пометьте его как правильный ответ, чтобы помочь другим парням с одинаковой проблемой. – BlackM

1

То, что вы делаете то же самое, как:

if (($f = 0) or 1){ 
    // $f is being assigned the value 0, and the condition evaluates 0 or 1, 
    // 1 being equivalent to true, the condition is always true. 
    echo "TRUE - $f"; 
}else{ 
    echo "FALSE - $f"; 
} 

и

if ($f = (0 || 1)){ // which gives $f = true which returns true 
    echo "TRUE - $f"; 
}else{ 
    echo "FALSE - $f"; 
} 

, если вы хотите проверить, если $ е равно значению или иначе вы бы

if ($f === 0 or $f === 1) 

Помните, что в php по умолчанию int 1 будет оцениваться как bool true, если вы не выполните строгое сравнение === or! ==

0

проблема здесь: «если ($ е = 0 или 1) { ":

"=" означает, что вы даете переменные $ F значения 0

вы должны использовать:

  • «==»: проверяет, если значения равны
  • «===»: проверяет, является ли левая переменная идентична правой переменной (значение, тип и т.д.)
Смежные вопросы