如果条件在PHP奇怪的情况

Seo*_*udo 0 php conditional

我在php中发现了一个奇怪的情况...或者我可能记不起来了:

<?php

if (isset($_POST["invio"]) && ($_POST["valore1"] && $_POST["valore2"])) {

        if($_POST["valore1"]) {
        $valore1 = $_POST["valore1"];
        }
        if($_POST["valore2"]) {
        $valore2 = $_POST["valore2"];
        }


        function pippo ($x,$y) {

        if($x < $y) {
        return "la variabile $x è minore della variabile $y";
        }
        elseif($x == $y) {
        return "la variabile $x è uguale alla variabile $y";
        }
        else {
        return "la variabile $x è più grande rispetto alla variabile $y";
        }
        }

        $risultato = pippo($valore1,$valore2);

        print $risultato;

}elseif (isset($_POST["invio"]) && ($_POST["valore1"] =="" || $_POST["valore2"] =="") ) {
        print "Manca almeno un valore";
        }
Run Code Online (Sandbox Code Playgroud)

如果我尝试删除两个括号:

}elseif (isset($_POST["invio"]) && $_POST["valore1"] =="" || $_POST["valore2"] =="" ) {
        print "Manca almeno un valore";
        }
Run Code Online (Sandbox Code Playgroud)

系统进入打印条件内部..为什么这样做?

Dav*_*rtz 5

AND的优先级高于OR

a && b || c
Run Code Online (Sandbox Code Playgroud)

被解释为

(a && b) || c
Run Code Online (Sandbox Code Playgroud)

不是

a && (b || c)
Run Code Online (Sandbox Code Playgroud)

AND是乘法的布尔版本 - (0 AND 1)就像(0 * 1)0 一样是0.

或者就像加法一样 - (0 OR 1)就像(0 + 1)1一样.

A * B + C也可以理解为(A * B) + C.