如果条件在PHP奇怪的情况

时间:2013-10-21 22:12:36

标签: 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";
        }

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

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

系统进入打印状态。为什么会这样做?

1 个答案:

答案 0 :(得分:5)

AND higher precedence比OR

a && b || c

被解释为

(a && b) || c

不是

a && (b || c)

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

OR就像添加一样 - (0 OR 1)是1,就像(0 + 1)是1一样。

A * B + C也会被理解为(A * B) + C