天天看點

2-2. PHP 運算符

4)比較運算符

== 值是否相等

如果值相等則是true,不相等就是 false

$a=10;
$b=10;
var_dump($a==$b); //true
           

=== 全等(值要相等,類型也要相等)

$a=11;
$b='11';
var_dump($a==$b); //true, php裡'11'會被強制類型轉換成int 11
var_dump($a===$b); //false
           

!= 值是否不相等

如果兩邊操作數的值不相等結果是true,否則就是false

 <> 值是否不相等,和上面!=用法相同

!== 不全等

$a=11;
$b='11';
var_dump($a!=$b); //false
var_dump($a!==$b); //true
           

<、>、<=、>=

注:一般不用echo輸出的原因是輸出的值是布爾類型,看不出變量的具體類型

5)邏輯運算符

參與邏輯運算的表達式是布爾類型的值,如果不是布爾類型的值會被自動轉換成布爾類型的值,然後再參與運算

邏輯與:&&

左右表達式兩邊的結果都是true的時候結果為true,否則隻要其中一個為false,運算的結果就是false

$a=true;
$b=false;
var_dump($a && $b); //false
           

注:以下的值被認為是false,其他的值都被認為true

布爾值false、0、浮點型0.0、空白字元串和字元串0、沒有成員的數組、NULL

邏輯或:||

左右兩邊的表達式有一個是true,那麼結果就是true

邏輯異或:xor

左右兩邊表達式的值不一樣的時候結果就是true,反正為false

$a=false;
$b=true;
var_dump($a xor $b); //true
           

邏輯非:!

$a=true;
var_dump(!$a); //false
           

6)位運算符(不怎麼用)

7)其他運算符:

三元運算    表達式1 ? 表達式2 :表達式3

如果表達式1的值為true,那麼執行表達式2,否則就執行表達式3

$a=false ? 10 : 20;
echo $a; //20
           

系統指令執行符(設計跨平台):`` 

$a=`ipconfig`;
$b=`ipconfig`;
var_dump($b);
           

屏蔽表達式可能的錯誤:@

echo @$a;
           

注:@一定是放在表達式前面

=>(數組)

->(對象)

instanceof(對象)

8)運算符的優先級

優先級:誰的優先級高先算誰

結合方向:規定了從哪個方向開始算

優先級、結合方向歸納:

1. 無,遞增遞減

2. 右,邏輯非

3. 左,乘、除、取餘

4. 左,加、減、字元串連接配接符

5. 無,包含大于或小于号的運算符

6. 無,不包含大于或小于号的運算符

7. 左,邏輯與 &&

8. 左,邏輯或 ||

9. 左,?:

10. 右,指派運算符

11. 左,邏輯異或 xor

注:使用括号可以增強代碼的可讀性

短路問題:

隻要有邏輯運算符(邏輯與、邏輯或),那麼運算結果就是一個true或false

那運算的過程就不重要了

$a=false;
$b=1;
$a && ++$b;
echo $b; //短路,上面++$b被短路了,$b還是1