0

我在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";
        }

系统进入带有打印的条件..为什么要这样做?

4

1 回答 1

5

AND的优先级高于 OR 所以

a && b || c

被解释为

(a && b) || c

不像

a && (b || c)

AND 是乘法的布尔版本——(0 AND 1)是 0 就像(0 * 1)是 0。

OR 就像加法一样——(0 OR 1)是 1 和1 一样(0 + 1)

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

于 2013-10-21T22:14:44.853 回答