我在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";
}
系统进入打印状态。为什么会这样做?
答案 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
。