我在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)
系统进入打印条件内部..为什么这样做?
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.