PHP程式設計講義區
|
|
|
基礎級課程
(資料以www.php.net官方網站內容為主,部份另自網路上取得,並盡可能註明來源出處,如有遺漏,敬請來信指正,謝謝!) |
編號
|
主題
|
內容大網
|
作業
|
備註
|
3
|
PHP 基本語法 |
- 程式碼概論
- 註解
- 變數、常數
- 資料型態
- 運算子
- 函式
- 外部傳遞變數
|
作業一:陣列
作業二:
簡易表單資料傳遞
|
|
|
運算子 ( Operator ) |
什麼是運算子(有人翻譯為「運算元」或「運算符號」),以下例來解釋:
$a + $b 稱為「表示式」(expressions)
+ 即稱為運算子(operator)
所以,在PHP的運算子裡,大致歸類下列十種:
- 算術運算子
- 指定運算子
- 位元運算子
- 比較運算子
- 錯誤控制運算子
- 執行運算子
- 加一/減一運算子
- 邏輯運算子
- 字串運算子
- 陣列運算子
|
|
|
1. 算術運算子 |
|
其實與一般的數學沒甚麼兩樣:
運算子
|
範例
|
用途
|
+
|
$a + $b
|
$a 和 $b 的和。 |
-
|
$a - $b
|
$a 和 $b 的差。 |
*
|
$a * $b
|
$a 和 $b 的乘積。 |
/
|
$a / $b
|
$a 除以 $b 的商。 |
%
|
$a % $b
|
$a 除以 $b 的餘數。 |
|
|
|
|
2.指定運算子 |
|
基本的指定運算符就是“=”。並不稱做“等於”,實際上意味著把右邊運算式的值指定給左運算數。例如:
正確的解釋是將「右邊的$a + 2 的值」指定給「左邊的 $a 」。所以在程式技巧中,可以把表示式簡寫為下列方式:
標準式
|
簡單式
|
$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
|
其他的運算子也可以以類似的方式簡單表達,而達成運算目的。
|
|
|
|
3. 位元運算子 |
|
將整數視為二進位的字串來加以運算;因為有點難,大致了解即可:
範例
|
名稱
|
結果
|
$a & $b |
And(且) |
將在 $a 和 $b 中都為 1 的位設為 1。 |
$a | $b |
Or(或) |
將在 $a 或者 $b 中為 1 的位設為 1。 |
$a ^ $b |
Xor(互斥) |
將在 $a 和 $b 中不同的位設為 1。 |
~ $a |
Not(補數) |
將 $a 中為 0 的位設為 1,反之亦然。 |
$a << $b |
Shift left(左移) |
將 $a 中的位向左移動 $b 次(每一次移動都表示“乘以 2”)。 |
$a >> $b |
Shift right(右移) |
將 $a 中的位向右移動 $b 次(每一次移動都表示“除以 2”)。 |
|
|
|
|
4. 比較運算子 |
|
範例
|
名稱
|
解釋
|
$a == $b
|
等於
|
TRUE,如果 $a 等於 $b。 |
$a === $b
|
全等
|
TRUE,如果 $a 等於 $b,並且它們的類型也相同。(PHP 4 only) |
$a != $b
|
不等
|
TRUE,如果 $a 不等於 $b。 |
$a <> $b
|
不等
|
TRUE,如果 $a 不等於 $b。 |
$a !== $b
|
非全等
|
TRUE,如果 $a 不等於 $b,或者它們的類型不同。(PHP 4 only) |
$a < $b
|
小與
|
TRUE,如果 $a 小於 $b。 |
$a > $b
|
大於
|
TRUE,如果 $a 大於 $b。 |
$a <= $b
|
小於等於
|
TRUE,如果 $a 小於或者等於 $b。 |
$a >= $b
|
大於等於
|
TRUE,如果 $a 大於或者等於 $b。 |
另外一個條件運算符是“?:”(或三元)運算符,它和 C 以及很多其他語言的操作一樣。
(expr1) ? (expr2) : (expr3);
如果 expr1 的值為 TRUE,則此運算式的值為 expr2,如果 expr1 的值為 FALSE,則此運算式的值為 expr3。
|
|
|
|
5. 錯誤控制運算子 |
|
PHP 支援一個錯誤控制運算符「@」。當將其放置在一個
PHP 運算式之前,該運算式可能產生的任何錯誤資訊都被忽略掉。這功能有幾個目的:
- 安全性:避免因程式上的某些錯誤訊息將一些訊息告知了外界,而暴露系統上可能的安全漏洞。
- 美觀:因為錯誤訊息會造成顯示畫面的混亂。
基本,但這個功能得在安裝PHP時啟動 track_errors 功能(也可事後在php.ini中修改),運算式所產生的任何錯誤資訊才會被存放在總體變數
$php_errormsg 裡,並顯示出來。
01: <?php
02 $abc = @mysql_connect ('root', 'test', 'database');
03: ?>
|
|
|
|
|
|
6. 執行運算子 |
|
PHP 支持一個執行運算符:反引號「` .... `」。注意這不是單引號!PHP 將嘗試將反引號中的內容作為shell命令來執行,並將其輸出資訊返回(例如,可以賦給一個變數而不是簡單地丟棄到標準輸出)。
01: <?php
02: $output = `ls -al`; 03: echo "<pre> $output </pre>;
04: ?>
|
|
這只能在command文字命令模式下執行,不可透過Web
Server執行。(影片示範) |
注: 反引號運算子在啟動了 safe mode 或者關閉了 shell_exec() 時是無效的。
|
|
|
|
7. 加一/減一運算子 |
|
PHP 支持 C 風格的前/後加一與減一運算子。
範例
|
名稱
|
解釋
|
++$a
|
前加
|
$a 的值加一,然後返回 $a。 |
$a++
|
後加
|
返回 $a,然後將 $a 的值加一。 |
--$a
|
前減
|
$a 的值減一, 然後返回 $a。 |
$a--
|
後減
|
返回 $a,然後將 $a 的值減一。 |
01: <?php 02: echo "<h3>a++</h3>"; 03: $a = 5; 04: echo "應該是 5: ".$a++."<br />\n"; 05: echo "應該是 6: ".$a."<br />\n";
06:
07: echo "<h3>++a</h3>"; 08: $a = 5; 09: echo "應該是 6: ".++$a."<br />\n"; 10: echo "應該是 6: ".$a."<br />\n";
11:
12: echo "<h3>a--</h3>"; 13: $a = 5; 14: echo "應該是 5: ".$a--."<br />\n"; 15: echo "應該是 4: ".$a."<br />\n";
16:
17: echo "<h3>--a</h3>"; 18: $a = 5; 19: echo "應該是 4: ".--$a."<br />\n"; 20: echo "應該是 4: ".$a."<br />\n"; 21:
22: ?>
|
|
|
|
|
|
|
8. 邏輯運算子 |
|
邏輯運算子主要用來測試條件句的真(true)或假(false),以判斷程式的某個段落是否繼續執行或跳脫。
範例
|
名稱
|
解釋
|
$a and $b
|
And(邏輯與)
|
TRUE,如果 $a 與 $b 都為 TRUE。 |
$a or $b
|
Or(邏輯或)
|
TRUE,如果 $a 或 $b 任一為 TRUE。 |
$a xor $b
|
Xor(邏輯互斥)
|
TRUE,如果 $a 或 $b 任一為 TRUE,但不同時是。 |
! $a
|
Not(邏輯非)
|
TRUE,如果 $a 不為 TRUE。 |
$a && $b
|
And(邏輯與)
|
TRUE,如果 $a 與 $b 都為 TRUE。 |
$a || $b
|
Or(邏輯或)
|
TRUE,如果 $a 或 $b 任一為 TRUE。 |
|
|
|
|
9. 字串運算子 |
|
有兩個字串運算符。第一個是連接運算符(“.”),它返回其左右參數連接後的字串。第二個是連接指定運算子(“.=”),它將右邊參數附加到左邊的參數後。
01: <?php 02: $a = "PHP程式設計"; 03: $b = $a . "基礎班"; 04: echo $b . "<BR>"; 05: 06: $c = "台中市"; 07: $c .= "資訊網路中心"; 08: echo $c;
09: ?>
|
|
|
|
|
|
10.陣列運算子 |
|
PHP 僅有的一個陣列運算子是「 +」 運算子。它把右邊的陣列附加到左邊的陣列後,但是重複的索引值不會被覆蓋。
01: <?php 02: $a = array("1" => "一月", "2" => "二月"); 03: $b = array("1" => "星期一", "2" => "星期二", "3" => "星期三"); 04: $c = $a + $b;
05:
06: var_dump($c); // var_dump( ) 是顯示變數內容的函數
07: ?>
|
|
第06行的結果將會是:
array(3) { [1]=> string(4)
"一月" [2]=> string(4) "二月"
[3]=> string(6) "星期三" }
表示 $c 變數是array (陣列),裡面的元素中,索引值1是字串,字串長度是4,內容是"一月",以下以此類推。
|
|
|
|
運算子優先順序
運算子優先順序指定了兩個運算式綁定得有多“緊密”。例如,運算式 1 + 5 * 3 的結果是 16 而不是 18 是因為乘號(“*”)的優先順序比加號(“+”)高。必要時可以用括弧來強制改變優先順序。例如:(1
+ 5) * 3 的值為 18。
下表從低到高列出了運算子的優先順序。
優先等級
|
結合方向
|
運算子
|
|
左
|
, |
左
|
or |
左
|
xor |
左
|
and |
右
|
print |
左
|
= += -= *= /= .= %= &= |= ^= ~= <<= >>= |
左
|
? : |
左
|
|| |
左
|
&& |
左
|
| |
左
|
^ |
左
|
& |
無
|
== != === !== |
無
|
< <= > >= |
左
|
<< >> |
左
|
+ - . |
左
|
* / % |
右
|
! ~ ++ -- (int) (float) (string) (array) (object) @ |
右
|
[ |
無
|
new |
|
|
|
|
版權聲明:Copyright
© 1999-2003 王勝雄 Kevin Wang
|
一、
|
本網站所提及的註冊商標、公司名稱均屬於該登記合法註冊的公司所有。 |
二、
|
本網站之圖文設計、課程編輯內容等均屬作者所有,若用於其他用途(例如商業用途),需經作者同意,除此之外,本網站所有文件為自由文件(FDL),可自由複製、修改、散佈,但請保留版權聲明。 |
|
以上出自:
http://km.tceb.edu.tw/~wsx/php/ch3-5.htm
留言列表