一、&&、and、||、or作爲單獨的表達式
1、&&、and示例
<?php
!isset($var1)
&& $var1 = 2;
echo $var1;
!isset($var1)
&& $var1 = 2;
echo $var1;
isset($var1) && $var1 = 3;
echo $var1;
!isset($var2)
and $var2 = 2;
echo $var2;
!isset($var2)
and $var2 = 2;
echo $var2;
isset($var2) and $var2 = 3;
echo $var2;
?>
輸出結果:224224
結論:如果&&/and左邊表達式爲真,右面表達式方可執行。
2、||、or示例
<?php
!isset($var1)
|| $var1 = 2;
echo $var1;
!isset($var1)
|| $var1 = 3;
echo $var1;
isset($var1) || $var1 = 4;
echo $var1;
!isset($var2)
or $var2 = 2;
echo $var2;
!isset($var2)
or $var2 = 3;
echo $var2;
isset($var2) or $var2 = 4;
echo $var2;
?>
輸出結果:
Notice: Undefined variable: var1 in D:\Web Projects\test\and.php on line 3
Notice: Undefined variable: var1 in D:\Web Projects\test\and.php on line 5
4
Notice: Undefined variable: var2 in D:\Web Projects\test\and.php on line 10
Notice: Undefined variable: var2 in D:\Web Projects\test\and.php on line 12
4
結論:如果||/or左邊表達式爲假,右面表達式方可執行。
二、&&、and、||、or表達式賦值給變量
1、&&、and
<?php
$true = TRUE;
$false = FALSE;
$rt1 = $true && $false;//$rt1:FALSE
$rt2 = $true and $false;//$rt2:TRUE
var_dump($rt1);//FALSE
var_dump($rt2);//TRUE
var_dump($true && $false);//FALSE
var_dump($true and $false);//FALSE
var_dump($rt1 = $true && $false); //FALSE
var_dump($rt2 = $true and $false);//FALSE
?>
這裏最讓人感到奇怪的就是爲什麼$rt1成了FALSE,而$rt2卻是TRUE。其實這是PHP優先級在作怪。從文檔中我們看到,賦值符號”=”的優先級低於邏輯與符號”&&”,但高於邏輯與符號”and”(也就是&& >
= > and)。也就是說:
$rt1 = $true && $false;
$rt2 = $true and $false;
在PHP看來其實是:
$rt1 = ($true && $false);
($rt2 = $true) and $false;
2、||、or的情況與&&、and一樣,自己寫代碼測試,再次不再贅述。