4.運算子和流程控制
運算子
在 PHP 中,賦值運算子 = 用於給變數賦值。
在 PHP 中,算術運算子 + 用於把值加在一起
1.算數運算子
運算子 | 名稱 | 描述 | 例項 | 結果 |
---|---|---|---|---|
x + y | 加 | x 和 y 的和 | 2 + 2 | 4 |
x - y | 減 | x 和 y 的差 | 5 - 2 | 3 |
x * y | 乘 | x 和 y 的積 | 5 * 2 | 10 |
x / y | 除 | x 和 y 的商 | 15 / 5 | 3 |
x % y | 模(除法的餘數) | x 除以 y 的餘數 | 5 % 2 10 % 8 10 % 2 | 1 2 0 |
- x | 取反 | x 取反 | <?php $x =2; echo -$x; ?> |
-2 |
a . b | 並置 | 連線兩個字串 | "Hi" . "Ha" | HiHa |
<?php
// 取餘
echo 10 % 3 // 返回10/3的餘數 1
// 取反
$x =2;
echo -$x; // -1
//並置
echo 'hello '.'word' // hello word
?>
2.賦值運算子
在 PHP 中,基本的賦值運算子是 "="。它是左運算元被設定為右側表示式的值。也就是說,"$x = 5" 的值是 5。
運算子 | 等同於 | 描述 |
---|---|---|
x = y | x = y | 左運算元被設定為右側表示式的值 |
x += y | x = x + y | 加 |
x -= y | x = x - y | 減 |
x *= y | x = x * y | 乘 |
x /= y | x = x / y | 除 |
x %= y | x = x % y | 模(除法的餘數) |
a .= b | a = a . b | 連線兩個字串 |
<?php $x=10; echo $x; // 輸出10 $y=20; $y += 100; echo $y; // 輸出120 $z=50; $z -= 25; echo $z; // 輸出25 $i=5; $i *= 6; echo $i; // 輸出30 $j=10; $j /= 5; echo $j; // 輸出2 $k=15; $k %= 4; echo $k; // 輸出3 $x="Hello"; $x .= " world!"; echo $x; // 輸出Hello world! ?>
3.遞增/遞減運算子
運算子 | 名稱 | 描述 |
---|---|---|
++ x | 預遞增 | x 加 1,然後返回 x |
x ++ | 後遞增 | 返回 x,然後 x 加 1 |
-- x | 預遞減 | x 減 1,然後返回 x |
x -- | 後遞減 | 返回 x,然後 x 減 1 |
<?php
$x=10;
echo ++$x; // 輸出11
$y=10;
echo $y++; // 輸出10
$z=5;
echo --$z; // 輸出4
$i=5;
echo $i--; // 輸出5
?>
4.比較運算子
比較操作符可以讓您比較兩個值:
運算子 | 名稱 | 描述 | 例項 |
---|---|---|---|
x == y | 等於 | 如果 x 等於 y,則返回 true | 5==8 返回 false |
x === y | 絕對等於 | 如果 x 等於 y,且它們型別相同,則返回 true | 5==="5" 返回 false |
x != y | 不等於 | 如果 x 不等於 y,則返回 true | 5!=8 返回 true |
x <> y | 不等於 | 如果 x 不等於 y,則返回 true | 5<>8 返回 true |
x !== y | 絕對不等於 | 如果 x 不等於 y,或它們型別不相同,則返回 true | 5!=="5" 返回 true |
x > y | 大於 | 如果 x 大於 y,則返回 true | 5>8 返回 false |
x < y | 小於 | 如果 x 小於 y,則返回 true | 5<8 返回 true |
x >= y | 大於等於 | 如果 x 大於或者等於 y,則返回 true | 5>=8 返回 false |
x <= y | 小於等於 | 如果 x 小於或者等於 y,則返回 true | 5<=8 返回 true |
5.邏輯運算子
運算子 | 名稱 | 描述 |
---|---|---|
x and y | 與 | 如果 x 和 y 都為 true,則返回 true |
x or y | 或 | 如果 x 和 y 至少有一個為 true,則返回 true |
x xor y | 異或 | 如果 x 和 y 有且僅有一個為 true,則返回 true |
x && y | 與 | 如果 x 和 y 都為 true,則返回 true |
x || y | 或 | 如果 x 和 y 至少有一個為 true,則返回 true |
! x | 非 | 如果 x 不為 true,則返回 true |
6.運算子優先順序
下表按照優先順序從高到低列出了運算子。同一行中的運算子具有相同優先順序,此時它們的結合方向決定求值順序。
說明:左 = 從左到右,右 = 從右到左。
結合方向 | 運算子 | 附加資訊 |
---|---|---|
無 | clone new | clone 和 new |
左 | [ | array() |
右 | ++ -- ~ (int) (float) (string) (array) (object) (bool) @ | 型別和遞增/遞減 |
無 | instanceof | 型別 |
右 | ! | 邏輯運算子 |
左 | * / % | 算術運算子 |
左 | + – . | 算術運算子和字串運算子 |
左 | << >> | 位運算子 |
無 | == != === !== <> | 比較運算子 |
左 | & | 位運算子和引用 |
左 | ^ | 位運算子 |
左 | | | 位運算子 |
左 | && | 邏輯運算子 |
左 | || | 邏輯運算子 |
左 | ? : | 三元運算子 |
右 | = += -= *= /= .= %= &= |= ^= <<= >>= => | 賦值運算子 |
左 | and | 邏輯運算子 |
左 | xor | 邏輯運算子 |
左 | or | 邏輯運算子 |
左 | , | 多處用到 |
運算子優先順序中,or 和 ||,&& 和 and 都是邏輯運算子,效果一樣,但是其優先順序卻不一樣。
7.括號的使用
我們通過括號的配對來明確標明運算順序,而非靠運算子優先順序和結合性來決定
你可以認為括號的優先順序高於它們
<?php
// 括號優先運算
$a = 1;
$b = 2;
$c = 3;
$d = $a + $b * $c;
echo $d;
echo "\n";
$e = ($a + $b) * $c; // 使用括號
echo $e;
echo "\n";
?>
8.三元運算子
語法: 條件?條件為真執行的程式碼:條件為假執行的程式碼
<?php
$x = false;
$y = true;
echo $x; // 0
echo $y; // 1
$x?$x='真':$x='假';
$y?$y='真':$y='假';
echo $x; // 假
echo $y; // 真
?>
9.其他運算子
符號資訊 | 說明 |
---|---|
``反引號 | 反引號中間插入程式碼,執行系統命令,等價於shell_exec函式 |
@ | 表示抑制錯誤,把這一行的錯誤不讓它顯示出來了,效率低不建議用 |
=> | 陣列下標訪問符 |
-> | 物件訪問符 |
instanceof | 判斷某個物件是否來自某個類,如果是的返回true,如果不是返回false |
必會: `` 反引號中間插入程式碼,執行系統命令,等價於shell_exec函式
<?php
echo `ipconfig` // 列印本機的IP地址資訊
?>
流程控制
條件語句用於根據不同條件執行不同動作。
當你編寫程式碼時,您常常需要為不同的判斷執行不同的動作。您可以在程式碼中使用條件語句來完成此任務。
在 PHP 中,提供了下列條件語句:
- if 語句 - 在條件成立時執行程式碼
- if...else 語句 - 在條件成立時執行一塊程式碼,條件不成立時執行另一塊程式碼
- if...elseif....else 語句 - 在若干條件之一成立時執行一個程式碼塊
- switch 語句 - 在若干條件之一成立時執行一個程式碼塊
1.if 語句
if
語句用於僅當指定條件成立時執行程式碼。
語法 :
if (條件) {
當條件為 true(真) 時執行的程式碼;
}
舉例:
<?php $sex = 'boy'; if($sex = 'boy' ){ echo '男孩子在外面要保護好自己'; }?>
2.if-else
在條件成立時執行一塊程式碼,條件不成立時執行另一塊程式碼,請使用 if....else
語句。
語法:
if (條件) { 條件為 true 時執行的程式碼;} else { 條件為 false 時執行的程式碼;}
舉例
<?php $sex = 'boy'; if($sex = 'boy' ){ echo '男孩子在外面要保護好自己'; }else{ echo '不要相信男人說的話'; }?>
3.iif...elseif....else
在若干條件之一成立時執行一個程式碼塊,請使用if...elseif...else
語句。.
語法:
if (條件){ if 條件成立時執行的程式碼;}elseif (條件){ elseif 條件成立時執行的程式碼;}else{ 條件不成立時執行的程式碼;}
舉例:
<?php $dida = rand(0,23); // 獲取一個0-23之間的隨機數,包括23 echo "當前時間為 $dida 點\n"; if($dida > 6 && $dida < 10 ){ echo '豆漿油條'; }elseif ($dida > 10 && $dida < 14){ echo '吃蘭州拉麵'; }elseif ($dida >= 14 && $dida < 22){ echo '正規按摩'; }elseif ($dida > 22 && $dida <=23){ echo '打打遊戲'; }elseif ($dida >=1 && $dida <3){ echo '吃吃夜宵'; }else{ echo '睡覺或者工作中'; }?>
4.switch
如果您希望有選擇地執行若干程式碼塊之一,請使用switch
語句
語法 :
<?php switch (n) { case 值1: 如果 n=值1,此處程式碼將執行; break; case 值1: 如果 n=值1,此處程式碼將執行; break; default: 如果 n 既不等於 值1 也不等於 值1,此處程式碼將執行; } // case 值,後面緊跟的不是分號是:(冒號) // 每個case下面必須有break // default 可以不寫?>
工作原理:首先對一個簡單的表示式 n(通常是變數)進行一次計算。將表示式的值與結構中每個 case 的值進行比較。如果存在匹配,則執行與 case 關聯的程式碼。程式碼執行後,使用 break 來阻止程式碼跳入下一個 case 中繼續執行。default 語句用於不存在匹配(即沒有 case 為真)時執行。
舉例 :
$rubbish_category = '溼垃圾';switch ($rubbish_category) { case '不可回收垃圾': echo '去A垃圾桶'; break; case '可回收垃圾': echo '去B垃圾桶'; break; case '幹垃圾': echo '去C垃圾桶'; break; case '溼垃圾': echo '去D垃圾桶'; break; default: echo '你到底是什麼垃圾???';}?>
注意 : 如果不寫break,會從匹配到的第一個case後,一直執行到第一個break,中間就算有case也不會匹配了
直接執行case裡面的程式碼,如果一直沒有break,會執行到default下方程式碼結束,如果default也沒有就會執行匹
配到的case語句下所有的程式碼,一直到switch語句結束。