これらのステートメントは同等ですか?
if ($a || $b && $c)
{
// ...
}
if (($a || $b) && $c)
{
// ...
}
編集
何という打撃!しかし、それだけの価値はあります...すべての人にTHX!
これらのステートメントは同等ですか?
if ($a || $b && $c)
{
// ...
}
if (($a || $b) && $c)
{
// ...
}
編集
何という打撃!しかし、それだけの価値はあります...すべての人にTHX!
答え:いいえ。それらは同等ではありません。
PHP Operator Precedence tableを確認してください。&&
の前に明確にリストされています||
。
実際の動作はこちら: http://viper-7.com/cPycas
括弧の代わりに優先順位を使用したい場合は、より詳細な を使用できますAND
。
if ($a || $b AND $c)
{
// ...
}
これがdemoですが、括弧ほど明確ではないため、使用しないことをお勧めします。
は&&
よりも優先順位が高い||
ため、いいえ、同等ではありません。
いいえ。PHP では、次の($a || $b && $c)
ように評価されます。($a || ($b && $c))
参照: http://php.net/manual/en/language.operators.precedence.php
ANDを掛け算、ORを足し算と考えれば、真偽と優先度が得られます。
$a = 1;
$b = 0;
$c = 0;
if ($a + $b * $c)
{
// ...
}
if (($a + $b) * $c)
{
// ...
}
&&は||よりも優先されます。演算子の優先順位