看似簡單的東西,在實際運用中,還是很有意思的
算術運算子
運算子 名稱 結果
$a + $b 加法 $a 和 $b 的和
$a - $b 減法 $a 和 $b 的差
$a * $b 乘法 $a 和 $b 的積
$a / $b 除法 $a 除以 $b 的商
$a % $b 模數 $a 除以 $b 的餘數
遞增/遞減運算子
運算子 名稱 結果
++$a 前加 $a 的值加一,然後進行操作
$a++ 後加 $a 的值先進行操作,後加一
--$a 前減 $a 的值減一,然後進行操作
$a-- 後減 $a 的值先進行操作,後減一
執行個體:
複製代碼 代碼如下:
<?php
echo $a=5+”5th”; //輸出:10
echo 10%3; //輸出:1
echo 10+ $a++; //輸出:20
echo 5- --$a; //輸出:-5
?>
比較子
運算子 名稱 結果
$a == $b 等於 TRUE,如果$a等於$b
$a === $b 全等 TRUE,如果$a等於$b,並且它們的類型也相同
$a != $b 不等 TRUE,如果$a不等於$b
$a <> $b 不等 TRUE,如果$a不等於$b
$a !== $b 非全等 TRUE,如果$a不等於$b,或者它們的類型不同
$a < $b 小於 TRUE,如果$a嚴格小於$b
$a > $b 大於 TRUE,如果$a嚴格$b
$a <= $b 小於等於 TRUE,如果 $a 小於或等於$b
$a >= $b 大於等於 TRUE,如果 $a 大於或等於$b
另外一個條件運算子是“ ? : ”(或三元)運算子。
執行個體:
複製代碼 代碼如下:
<?php
var_dump(0=="a"); //輸出:bool(true)
var_dump(0=="00"); //輸出:bool(true)
var_dump(0==="00"); //輸出:bool(false)
var_dump(0<>"abc"); //輸出:bool(false)
var_dump(0!=="01"); //輸出:bool(true)
$a=10;
$b=20;
$str=$a>$b? "true":"false";
echo $str; //輸出:false
?>
邏輯運算子
運算子 名稱 結果
$a and $b 邏輯與 TRUE,如果 $a 與 $b 都為 TRUE。
$a or $b 邏輯或 TRUE,如果 $a 或 $b 任一為TRUE。
$a xor $b 異或 TRUE,如果 $a 和 $b 不同時
! $a 邏輯非 TRUE,如果 $a 不為 TRUE。
$a && $b 邏輯與 TRUE,如果 $a 與 $b 都為TRUE。
$a || $b 邏輯或 TRUE,如果 $a 或 $b 任一為TRUE。
其中and與&& 、or與||是同一邏輯運算子的兩種寫法。
邏輯與和邏輯或 都是短路運算子。在遇到下列邏輯運算式時,PHP解釋程式將不會計算右邊的運算式:
複製代碼 代碼如下:
<?php
$a=10;
if(false && (++$a));
echo $a; //輸出:10
$b=10;
if(true or (++$b));
echo $b; //輸出:10
?>
位元運算符
位元運算符允許對整型數中指定的位進行置位。如果左右參數都是字串,則位元運算符將操作字元的 ASCII 值。
運算式 名稱 結果
$a & $b 按位與 將把 $a 和 $b 中都為 1 的位設為 1。
$a | $b 按位或 將把 $a 或者 $b 中為 1 的位設為 1。
$a ^ $b 按位異或 將把 $a 和 $b 中不同的位設為 1。
~ $a 按位非 將 $a 中為 0 的位設為 1,反之亦然。
$a << $b 左移 將 $a 中的位向左移動 $b 次(每一次 移動都表示“乘以 2”)。
$a >> $b 右移 將 $a 中的位向右移動 $b 次(每一次 移動都表示“除以 2”)。
其他運算子
字串運算子
有兩個字串運算子。第一個是串連運算子(“.”),它返回其左右參數串連後的字串。第二個是串連賦值運算子(“.=”),它將右邊參數附加到左邊的參數後。
錯誤抑制操作符
在最常見的資料庫連接與檔案建立操作或出現除0等異常時,可以用@符號來抑制函數錯誤資訊輸出到瀏覽器端 $a=@(5/0)
外部命令執行
使用``來運行外部系統命令,注意不是單引號,是ESC下面那個按鍵
複製代碼 代碼如下:
<?php
$out=`dir c:`;
print_r($out);
?>//不建議使用
執行個體:
複製代碼 代碼如下:
<?php
$a="hello";
$a.=" world! "; //等同於:$a=$a." world!";
echo $a; //輸出:hello world!
$m = 3;
$m += 5; //等同於:$m=$m+5;
echo $m; //輸出:8
$c = ($b = 4) + 5;
echo $c; //輸出:9
?>
運算子優先順序
下表從低到高列出了運算子的優先順序。
結合方向 運算子
左 ,
左 or
左 xor
左 and
右 print
右 = += -= *= /= .= %= &= |= ^= ~= <<= >>=
左 ? :
左 ||
左 &&
結合方向 運算子
左 |
左 ^
左 &
無 == != === !==
無 < <= > >=
左 << >>
左 + - .
左 * / %
右 ! ~ ++ -- (int) (float) (string) (array) (object) @
右 [
無 new