私はこのようなコード行が発生しました:それらの間括弧は存在しないので、私はこれらすべての条件が満たされているかを理解していない:(複数のブール条件 - 演算子の優先順位
を
if ($users == 'all' || $_POST['user'] == 1 && $users == 'admins' || $_POST[ 'user' ] == 0 && $users == 'mods') ...
を部品が最初に評価を受ける&&
よりも重要である||
?
私はこのようなコード行が発生しました:それらの間括弧は存在しないので、私はこれらすべての条件が満たされているかを理解していない:(複数のブール条件 - 演算子の優先順位
を
if ($users == 'all' || $_POST['user'] == 1 && $users == 'admins' || $_POST[ 'user' ] == 0 && $users == 'mods') ...
を部品が最初に評価を受ける&&
よりも重要である||
?
はもちろん、オペレータの順序は十分にまともなプログラミング言語のように、定義されている。
this linkを参照してください。
私はニーモニックとして** Nandos **を使用しています:** N ** ot、** and **、** o ** r、** s ** hortest form first。 〜、!、&、|、&&、||、AND、ORを与える –
&&
は、正しい式の評価によって異なります。||
はありません。
if(
$users == 'all' ||
($_POST['user'] == 1 && $users == 'admins') ||
($_POST[ 'user' ] == 0 && $users == 'mods')
)
これは同じになります。
括弧がない場合、PHPは各式の左から右への評価を行い、途中でPHPのoperator precedenceを使用します。しかし、論理チェックの場合と同様に、AND
を混ぜて混乱させ、読みにくくすることができます。
http://php.net/manual/en/language.operators.precedence.php – matino