iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 9
0
Software Development

新手後端工程師的學習歷程系列 第 9

Day 9 - PHP 基礎語法 part II

tags: 2019鐵人賽 PHP

前言

昨天聊到了 PHP 基本的語法,今天在來談談運算子和運算符,運算符顧名思義就是類似數學運算的運算符,在程式語言裡也是用這些基本運算原則來處理程式碼。

例如:
1.運算式是從左到右
2.先乘除後加減

不過特別的事還要複合式運算符,這些比較特別的用法就是程式語言才有的,基本上都大同小異,但是對於一個初學者而言,是有必要先看一下的。


運算子與運算式

字串運算子 『 . 』

    $a = '我喜歡的程式是:';
    $b = 'PHP';

    echo $a.$b;

指派運算子 『 = 』

把等號右邊的值存入左方的變數

算數運算子 『 + 』『 - 』『 * 』『 / 』『 % 』

依序為 加、減、乘、除、取餘數

複合運算子

    // 『+=』—>加法指派
	$a += $b; //等同於 $a = $a + $b
    // 『-=』—>減法指派
	$a -= $b; //等同於 $a = $a - $b
    // 『*=』—>
	$a *= $b; //等同於 $a = $a * $b
    // 『/=』—>
	$a /= $b; //等同於 $a = $a / $b
    // 『%=』—>
	$a %= $b; //等同於 $a = $a % $b
    // 『.=』—>
	$a .= $b; //等同於 $a = $a . $b

遞增/遞減運算子

『++』:變數值加1
『--』:變數值減1

* 遞增/遞減運算子放在變數前後會有不一樣的效果
++$a:先把 $a 增加1,再傳回 $a 的值
$a++:先傳回 $a 的值,再把 $a  增加1

比較運算子

比較運算子會將運算式兩邊的運算元加以比較,再將結果以布林值回傳。
『==』:相等
『===』:全相等
『!=』:不等於
『!==』:不全等
『<』:小於
『>』:大於
『<=』:小於等於
『>=』:大於等於

『==』與『===』的差異

$a = 100; //型別為數字
$b = '100'; //型別為字串
$a == $b; //回傳值為 True,因為資料型別會自動轉換。
$a === $b; //回傳值為 False,因為資料型別不相等。

條件運算子

條件運算式 ? 成立時傳回運算式 : 不成立時傳回運算式;

	$a = 2;
	$b = ($a > 0) ? "正數" : "負數";
	echo $b;	//正數

簡易寫式的三元運算子『 ?: 』

實務上常會有這個需求:定義兩個運算元,當第一個運算元存在時即回傳其值,否則回傳另一個運算元的值。

	$a = 10;
	$b = 20;

	$c = $a ?: $b;
	echo $c;	//10

邏輯運算子

『and』等同於『&&』:$a、$b都 true 才成立
『or』等同於『||』:$a、$b其中一個為 true 就成立
『xor』:$a、$b都是 true 或都是 false 時不成立,反之則成立
『!』:!$a,結果是 $a 的相反


位元運算子(先略過)

其他的運算子

錯誤控制運算子

『@』:錯誤控制運算子能夠在PHP程式運作發生錯誤時,抑制錯誤訊息的顯示。使用的方法只要將『@』符號加在常發生錯誤的指令前面。

    $fp = @fopen ("test.txt");

執行指令運算子

執行指令預算子能讓 PHP 程式執行作業系統中的 shell 指令。使用時只要將執行指令前後用『 ` 』符號包含即可。

    $myIP = `ping www.e-happy.com.tw`;
    echo nl2br($myIP); //使用nl2br() 函式將傳回值結果自動分行顯示。
    

運算子執行的優先順序

<高>
++, --
!, ~, *, /, %
+, -
<<, >>
<, <=, >, >=
==, !=, ===, !==
&
^
|
&&
||
?:
=, +=, -=, *=, /=, %=, .=
and
xor
or
<低>
//當運算子在同一層時優先順序是由左至右,但是不含指定與複合運算子
//當然,在運算式中還是可以用括號()來改變運算的優先順序,括號中的運算式會先行計算。

上一篇
Day 8 - PHP 基礎語法 part I
下一篇
Day 10 - PHP 基礎語法 part III
系列文
新手後端工程師的學習歷程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
a600masool
iT邦新手 5 級 ‧ 2020-05-20 10:26:00

完全不等於應該是雙等號哦

!==
soj iT邦新手 4 級 ‧ 2020-05-20 10:27:26 檢舉

感謝,已修正

我要留言

立即登入留言