PHP程式設計講義區
 
回主目錄    
基礎級課程
(資料以www.php.net官方網站內容為主,部份另自網路上取得,並盡可能註明來源出處,如有遺漏,敬請來信指正,謝謝!)
編號
主題
內容大網
作業
備註
3
PHP 基本語法
  • 程式碼概論
  • 註解
  • 變數、常數
  • 資料型態
  • 運算子
  • 函式
  • 外部傳遞變數

作業一:陣列

作業二:
  簡易表單資料傳遞

 
運算子 ( Operator )

什麼是運算子(有人翻譯為「運算元」或「運算符號」),以下例來解釋:

$total = $a + $b;

$a + $b 稱為「表示式」(expressions)

+ 即稱為運算子(operator)

所以,在PHP的運算子裡,大致歸類下列十種:

  1. 算術運算子
  2. 指定運算子
  3. 位元運算子
  4. 比較運算子
  5. 錯誤控制運算子
  6. 執行運算子
  7. 加一/減一運算子
  8. 邏輯運算子
  9. 字串運算子
  10. 陣列運算子
 
  1. 算術運算子
 

其實與一般的數學沒甚麼兩樣:

運算子
範例
用途
+
$a + $b
$a 和 $b 的和。
-
$a - $b
$a 和 $b 的差。
*
$a * $b
$a 和 $b 的乘積。
/
$a / $b
$a 除以 $b 的商。
%
$a % $b
$a 除以 $b 的餘數。
   
  2.指定運算子
 

基本的指定運算符就是“=”。並不稱做“等於”,實際上意味著把右邊運算式的值指定給左運算數。例如:

$a = $a + 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

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 風箏 的頭像
    風箏

    風箏

    風箏 發表在 痞客邦 留言(0) 人氣()