PHP &&和and,||和or

一、&&、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一樣,自己寫代碼測試,再次不再贅述。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章