這個章節要介紹 Expressions (表達式),
引用官方手冊對表達式的介紹就是Anything that has a value
就是說任何有值的東西都屬於表達式的一部分
聽起來有點抽象,但透過下面的說明相信可以幫助你更加了解一些~
這章節主要會分成6個部分來討論:
- Variable and Constant
- Function
- Expression Orientation
- Comparison
- Combined
- Ternary conditional operator
Variable and Constant
這個部分會討論變數和常數。
來看看下面的 2 個範例:
- 我把 5 這個數值指派給 var 這個變數
1
$var = 5;
我們可以說 5是值為5的整數常數表達式。
- 我把 var 這個變數指派給另一個名為 var2 的變數
1
$var2 = $var;
我們可以說 var是值為5的變數表達式。
因為從第 1 個範例,我們已經將 var 的數值變成了5,然而 var 的數值是可以被改變的
因此才會說 var是值為5的變數表達式。
這些我們一般指派數值的情況都可以被視為一個表達式。
也可以說任何能被撰寫出來表達意圖的式子都能看做表達式。
Function
再來看函式的部分。
把 getValue 這個函式回傳的數值指配給 var 這個變數1
2
3
4function getValue(){
return 100;
}
$var = getValue();
我們可以說 getValue 這個函式是回傳數值 100 的表達式。
Expression Orientation
這部分要說明表達式順序的變化。
就像我們以往學過的先乘除後加減..等等,我們可以透過表達式的順序或加上括號來正確表達出我們的意圖。
先來一個範例快速認識一下:1
2
3
4
5
6
7$a = 5;$b = 5;
$a = 5;$b = $a;
$b = ($a = 5);
$b = $a = 5;
這 4 種表達式都表達了同一種意圖,就是將 a 變數和 b 變數的數值指派為 5。
變數的指派是由右到左,再搭配括號就可以寫出相同意思但不同型式的表達式。
1. 前置計算表達式
多數程式語言中,將某變數加 1 的動作可簡化成 ++ 這個符號。
而前置計算表達式就是先進行 ++ 的動作,再將加完後的結果拿去做後續的計算。
1 | $originValue = 1; |
2. 後置計算表達式
後置計算表達式則和前置計算表達式相反,會先用變數的數值去計算,再將變數進行 ++ 的動作。
1 | $originValue = 1; |
Comparison
這部分會介紹比較的運算符號,通常可以用於判斷的表達式,並依據結果回傳 true 或 false。
以下列出在 PHP 中可以使用的比較運算符號:
1.>
大於
2.>=
大於等於
3.==
數值相同
4.!=
數值不同
5.<
小於
6.<=
小於等於
7.===
數值相同、型態也相同
8.!==
數值不同或型態不同
當滿足以上描述的情況時,就慧回傳 true,反之則回傳 false。
Combined
在撰寫加減乘除這些運算符號類的計算表達式時,可以使用結合的方式,將2種運算符號結合
變成一個更簡化的表達式。
例如: $a + 3 可以簡化成 $a += 3,兩個表達式都同樣代表將 a 這個變數加上 3。
同樣的結合運算表達式還有:
- +=
- -=
- *=
- /=
- %=
使用這些結合的運算符號,可以幫助更方便、快速完成一個表達式。
Ternary conditional operator
這部分要討論結合變數和判斷的三重表達式。
簡單來說就是將判斷的情況以及 true 和 false 的結果結合成單行表達式。
下面先用中文來表達實際的句法:
要檢查的判斷 ? 符合的數值 : 不符合的數值
在語法結構相似或是程式較為簡短的時候,都可以用這種表達式取代 if/else 的語句,在整體上會使得程式碼更為簡潔。
使用三重表達式去指派數值給變數
1
2
3$age = 12;
$required_price = $age > 12 ? 300 : 150;
echo $required_price; // 結果會印出 150在函式中用三重表達式回傳數值
1
2
3
4
5function getPrice($age){
return $age > 12 ? 300 : 150;
}
$age = 12;
echo getPrice($age); // 結果會印出 150;
實際的運用還可以有其他更複雜的變化,但若運用得當,則可以達到簡化程式碼的功效~