Presentation is loading. Please wait.

Presentation is loading. Please wait.

PHP 變數、常數與運算子 變數 常數 運算子 http://ycchen.im.ncnu.edu.tw/www2011/lab/plab1.zip.

Similar presentations


Presentation on theme: "PHP 變數、常數與運算子 變數 常數 運算子 http://ycchen.im.ncnu.edu.tw/www2011/lab/plab1.zip."— Presentation transcript:

1 PHP 變數、常數與運算子 變數 常數 運算子

2 PHP 5 變數設定與常用指令 變數 變數命名 設定初始值 傳值設定(assign by copy)
傳址設定(assign by reference) 變數的種類 區域變數 全域變數 靜態變數 動態變數 預設變數 變數的型態轉換 讀取外部變數

3 變數命名 PHP5 變數命名規則如下: 在變數名稱上必須要儘量給予一個比較容易 瞭解意義的名稱。舉例來說: 變數一定以 '$' 為第一個字元
第二個字元必須為字母或底線('_') 第二個字元以後可以是下列字元的任意組合 底線 大寫、小寫英文字母(不同) 數字 ASCII 碼127 to 255 不可為保留字 在變數名稱上必須要儘量給予一個比較容易 瞭解意義的名稱。舉例來說: $a = $b * $c ; $area = $Length * $ Width ; (佳)

4 變數命名範例 變數名稱 說明 $name 合法 $Name 合法。但與$name是二個不同的變數 $_getScore
$number6_person $Put_score $aBC $6person 不合法, 第二字元必須為字母或底線 $get-score 不合法, 不可以有'-'字元

5 PHP 保留字

6 設定初始值 指定立即值 指定運算式 將一個資料型態的值存入變數中 例如 將運算式計算的結果複製到變數中 $a = 10 ;
$b = "Hello"; 指定運算式 將運算式計算的結果複製到變數中 $a = $X*$Y+2 ; $b = $c ;

7 傳值設定(assign by copy) 變數傳遞時也有兩種傳遞設定值的方式, 分別是 傳值設定與傳址設定兩種方式。
傳值設定就是將立即值或表示式運算所得的結 果複製到變數中。 $a=$b 是使用傳值設定, 會將 $b 的內容複製到目的變 數 $a 中。

8 傳值設定(assign by copy) 傳值設定範例 1: <html>
2: <title>傳值設定</title> 3: <body> 4: <?php 5: $a=10 ; 6: $b=$a ; 7: $b=$b+10 ; 8: echo "\$a=$a <br>" ; 9: echo "\$b=$b" ; 10: ?> 11: </body> 12: </html>

9 傳址設定(assign by reference)
傳址設定的方法不會複製變數的內容而是存入 變數的記憶體位址。 二個變數指向同一個記憶體空間。 若是要使用傳址設定的方式則必須在變數前再 加上一個 '&' 字元表示取得的是變數的位址而 並非變數的內容 $A = &$B;

10 傳址設定(assign by reference)
傳址設定 範例 1: <html> 2: <title>變數值設定</title> 3: <body> 4: <?php 5: $a = 10 ; // $a的值為10 6: $b = $a ; // $a的值複製給$b 7: $c = &$a ; // $a的記憶體位置給$c 8: echo "執行計算前 <br>"; 9: echo "A=$a <br>" ; 10: echo "B=$b <br>"; 11: echo "C=$c <p>"; 12: $b=$b+10 ; // $b的值加10 13: $c=$c+20 ; // $c的值加20 14: echo "執行計算後:<br>" ; 15: echo "A=$a <br>"; 16: echo "B=$b <br>" ; 17: echo "C=$c "; 18: ?> 19: </body> 20: </html>

11 變數的種類 程式中因為不同的需求而必須要撰寫自定函 數 (function),會使得程式碼在邏輯上被分割 成不同的區域。
每個區域可使用的變數種類可能不同: 全域變數可以在整個程式範圍內使用 (只有主程式的變數有變成全域變數的資格) 區域變數只能在函數內自己使用, 不能被其他函數 使用 靜態變數

12 區域變數 區域變數 在函數中定義使用的變數。它的使用範圍只 有在函數本身內使用。 函數一 函數二 主程式

13 區域變數 區域變數 範例 1: <?php 2: function MyFunction(){
3: echo "<< 在函數中 >> <br>" ; 4: echo "設定前: <br>"; 5: echo "A = $a <br>" ; 6: echo "B = $b <p>" ; 7: $a=10 ; // 區域變數 8: $b=20 ; 9: echo "設定後: <br>"; 10: echo "A = $a <br>" ; 11: echo "B = $b <p>" ; 12: } 13: ?> 14: <html> 15: <title>區域變數</title> 16: <body> 17: <?php 18: $a = 1 ; // 全域變數 19: $b = 2 ; // 全域變數 20: MyFunction() ; 21: echo "<< 在函數外 >> <br> "; 22: echo "A = $a <br>" ; 23: echo "B = $b <p>" ; 24: ?> 25: </body> 26: </html> 區域變數 區域變數 範例

14 全域變數 在 PHP 中全域變數無法直接在函數中使用,在 函數中欲使用全域變數,需以在函數內宣告變 數為全域變數 宣告全域變數的方法有兩種:
global 宣告 GLOBALS 陣列

15 全域變數 全域變數範例- global 宣告 若line 8 刪除會得何結果? 1: <?php 2: function SUM(){
3: global $a, $b, $c ; 4: $c = $a+$b ; 5: echo "在 SUM() 中 \$c = $c <p>" ; 6: } 7: function AVG() { 8: global $c ; 9: $c = $c/2 ; 10: echo "在 AVG() 中 \$c = $c"; 11: } 12: ?> 13: <html> 14: <title>全域變數</title> 15: <body> 16: <?php 17: $a=1 ; 18: $b=2 ; 19: $c=0 ; 20: SUM() ; 21: AVG() ; 22: ?> 23:</body> 24: </html> 全域變數範例- global 宣告 8-7-new.php  講line 8 刪除、且$c 變成10 global 不可設值 若line 8 刪除會得何結果?

16 全域變數 全域變數範例- GLOBALS 陣列 1: <?php 2: function MyFunction() {
3: $GLOBALS["c"]=$GLOBALS["a"]+$GLOBALS["b"] ; 4: } 5: ?> 6: <html> 7: <title>GLOBALS陣列</title> 8: <body> 9: <?php 10: $a=1 ; 11: $b=2 ; 12: $c=0 ; 13: MyFunction() ; 14: echo "\$a=$a , \$b=$b , \$c=$c" ; 15: ?> 16: </body> 17: </html>

17 靜態變數 在函數中使用, 它的目的就是讓區域變數的值不 會因為函數結束而消失。 區域變數的生命週期:
從函數開始時產生, 當函數結束時立即消滅。 若要保存區域變數的值, 使用靜態變數(Static) 各函數間的static 變數是彼此無關連的

18 靜態變數範例 1: <?php 1: <?php 2: function addone() {
4: $I=$I+1 ; 5: echo "\$I = $I<br>" ; 6: } 7: ?> 8: <html> 9: <title>區段變數生命週期</title> 10: <body> 11: <?php 12: addone() ; 13: addone() ; 14: addone() ; 15: ?> 16: </body> 17: </html> 1: <?php 2: function addone() { 3: static $I=0 ; 4: $I=$I+1 ; 5: echo "\$I = $I<br>" ; 6: } 7: ?> 8: <html> 9: <title>區段變數生命週期</title> 10: <body> 11: <?php 12: addone() ; 13: addone() ; 14: addone() ; 15: ?> 16: </body> 17: </html>

19 動態變數 (不教授,僅供參考) 一般來說, 宣告變數時都是使用固定的名稱。 例如 $name 是一個代表姓名的變數
動態變數的方式可以讓變數的內容變成一個新 的變數,在變數前面再加上一個 “$” 即可成 為動態變數。(需注意動態變數陣列) 例: $name=”John” $$name=”Lee” ; ($) ($name)$John=”Lee”

20 1:<html> 2: <title>動態變數寫法</title> 3: <body> 4: <?php 5: $name="John" ; 6: $$name="Lee" ; 7: echo "1. $$name <br>" ; 8: echo "2. ${$name} <br>" ; 9: echo "3. ".$$name."<br>" ; 10: echo "4. ".${$name} ; 11: ?> 12: </body> 13: </html>

21 預設變數 php.ini中一個參數 register_globals , 它是設定 環境變數, GET 變數, POST 變數, Cookie 變數 以及伺服器變數是否為全域變數. 若 register_globals 設 定為 on 就表示各變數均 為全域變數, 在程式中就可以直接使用 register_globals 若設為 on,有安全疑慮。 Example: echo $uid; echo $_POST['uid']; login.html <form method="post" action="login.php"> User: <input type="text" name="uid" /> </form> login.php

22 部分 $_SERVER 陣列中內容 'PHP_SELF' 目前執行的檔案名稱 'SERVER_NAME' 伺服器的名稱 'SERVER_SOFTWARE' 伺服器使用的軟體 'DOCUMENT_ROOT' 文件的根目錄 'HTTP_USER_AGENT' 使用者相關資訊 'REMOTE_ADDR' 遠端使用者的位址 'REMOTE_PORT' 遠端使用者的連線埠 在取得變數內容時, 以變數名稱為陣列索引 即可取得資訊,例如 'SERVER_NAME' 則可以 $_SERVER['SERVER_NAME'] 取得資訊

23 變數的型態轉換 PHP 變數的資料型態是由初始值的資料型態 來決定。 變數的資料型態轉換有兩種方式: 設定變數值 例如: $b = 12.3
$c = (int) $b; //$c=12 使用函數轉換 例如: settype($a, "integer") ; //將變數轉為整數型態 settype($a, "float") ; //將變數轉為浮點數型態

24 讀取外部變數 PHP 可利用讀取外部變數的方式,讀取使 用者輸入的資訊
除了取得使用者資訊外, 伺服器資訊、 Cookie、Session 等等對 PHP 來說都是屬於 外部變數或是全域變數

25 全域變數陣列 陣列 說明 $GLOBALS 目前程式碼範圍中有效的變數。 $_SERVER 和伺服器有關的變數,
陣列 說明 $GLOBALS 目前程式碼範圍中有效的變數。 $_SERVER 和伺服器有關的變數, $_GET 利用HTTP GET方式傳回的變數 $_POST 利用HTTP POST 方式傳回的變數 $_COOKIE 利用HTTP COOKIE 方式傳回的變數 $_FILES 上傳檔案時的變數 $_ENV 環境變數 $_REQUEST 讀取任何一種使用者輸入方式的變數 $_SESSION 讀取已註冊的SESSION變數 。

26 全域變數陣列應用 互動式網頁範例 <html> <title>表單輸入</title>
<body> <h2>凱文瑞克公司線上訂購系統 </h2> ======= 客戶資料 =======<br /> <form action="extra.php" method="get"> 公司名稱 <input type="text" name="company" size="20"/><br/> 公司地址 <input type="text" name="address" size="20"><br/> 訂購產品數量 <input type="text" name="amount" size="5" /><br/> <input type="submit" value=" 填好了 " /> <input type="reset" value=" 重填 " /> </form> </body> </html>

27 全域變數陣列應用 互動式網頁範例 (get 有缺點) 1: <html>
2: <title>取得外部變數</title> 3: <body> 4: <?php 5: echo $_GET['company'] . "您好: <br/>" ; 6: echo "感謝貴公司訂購本公司產品" . $_GET['amount'] . "個," ; 7: echo "貨款共" . ($_GET['amount']*100) . "元整。<br/>" ; 8: echo "貨品將於三日內送達{$_GET['address']}<br/>" ; 9: echo "再次感謝您的愛護。<br/>" ; 10: echo "凱文瑞克公司 敬上" ; 11: ?> 12: </body> 13: </html>

28 常數、預設常數 一經程式定義後不會因為程式的執行而改變 其內容值, 這種形式我們稱之為常數 PHP 本身提供了許多預設常數供設計者使用
自定常數 PHP 本身提供了許多預設常數供設計者使用 例如 PHP_VERSION 和 PHP_OS 分別表示 PHP 的 版本與 PHP 目前執行的作業平台

29 自定常數 要自行定義常數時可使用 define() 函數。
常數名稱並不需要加上「$」符號。 常數的值只接受純量型別 (布林值、整數、浮點數 、 字串) 的資料型別。 常數在整個程式中僅能定義一次,也不能取消定義, 也不能計算。 define() 的格式如下: define (常數名稱, 常數值, [case_insensitive]) 例: define (HELLO_MSG,"Good morning, ") ; $helloStr = HELLO_MSG . "Mr. Robinson";

30 運算子 算術運算子 (Arithmetic Operators) 指定運算子 (Assignment Operators)
位元運算子 (Bitwise Operators) 比較運算子 (Comparison Operators) 遞增遞減運算子 (Increment/Decrement Operators) 邏輯運算子 (Logic Operators) 錯誤控制運算子 (Error Control Operators) 字串運算子 (String Operators)

31 導讀 運算式 (expression) $a = $b ; 目的運算元 = 運算元 運算子 運算元 ;

32 算術運算子 算術運算子是最基本的數學運算子,主要就是 數值與變數之間的四則運算與取餘數。 算術運算子 功能 範例 + 加法 $a + $b
- 減法 $a - $b * 乘法 $a * $b / 除法 $a / $b % 取餘數 $a % $b

33 指定運算子 " = " 是最基本的指定運算子。 程式語言中的 "=" 和數學上的 "=" 所代表的意義不同。
“=”可以看成是"指定 " 、 "存入" 的意思,並不是代 表數學中 "="的二邊是相等的意思。 指定運算子的功能是將 "="右邊的值 存入 " = " 左邊的 變數。 指定運算子 功能 範例 = 指定 $a = 10 ; $a = $b ; $a = $a + $b ;

34 指定運算子 運算式中的二個運算元若其中有一個為目的運 算元時可以簡寫。 例如:
$a += 10 ; // 意即 $a = $a + 10 ; $b *= $c ; // 意即 $b = $b * $c ; $c .= "Hello" ; // 意即 $c = $c . "Hello"; 指定運算子還可以指定 "位址" 給目的運算元, 例如 $a=&$b,並無複製的動作。

35 邏輯運算子 邏輯運算只有真 (True) 及假 (False) 二個值。 邏輯運算子 AND OR NOT XOR

36 邏輯運算子的寫法 邏輯運算子 功能 範例 ! NOT !$a And AND $a and $b && $a && $b Or OR
$a or $b || $a || $b Xor XOR $a xor $b

37 比較運算子 比較運算子提供二個數值、變數或運算間 判斷二者大小的運算,其結果必為真或假。 比較運算子 功 能 範 例 > 大於
功 能 範 例 > 大於 $a > $b == 等於 $a == $b < 小於 $a < $b >= 大於或等於 $a >= $b <= 小於或等於 $a <= $b != 不等於 $a != $b === 值與型態都相同 $a ===$b

38 遞增遞減運算子 PHP 提供了一個簡單的加/減 1寫法,而且可選 擇先加/減 1 再運算或先運算再加 1 或減 1。 (需注意 $a=$b+++$c) 遞增遞減運算子 功 能 範 例 ++$a 先加1再運算 $a = (++$b) - 10 $a++ 先運算再加1 $a = 10 * ($b++) --$a 先減1再運算 $a = (--$b) + 10 $a-- 先運算再減1 $a = 10 * ($b--)

39 位元運算子 以位元 (bit) 為單位的邏輯運算 十進制轉二進制
在邏輯運算時 1 代表真, 0 代表假。例如 邏輯運算時 1 and 0 = 0, 1 or 1 = 1。 十進制 二進制 5 10 20

40 位元運算子 (移n位 = *2n ) (移n位 = /2n ) 位元運算子 功能 範例 & AND各位元 $a & $b | OR 各位元
^ XOR 各位元 $a ^ $b ~ NOT 各位元 ~$a << 向左移n位元 $a << 3 >> 向右移n位元 $a >> 3 (移n位 = /2n )

41 字串運算子 字串的操作比較簡單,只有一個串接運算 子。 字串運算子 功能 範例 . 連接字串 $a . "Hello"

42 錯誤控制運算子 如果發生錯誤時不會將錯誤訊息顯示於網頁 在 php.ini 檔案中將 track_errors 設定為 on (預設值為off) 則錯誤訊息仍然會存放 於 $php_errormsg 中 1: <?php 2: $a=10; 3: $b=0; 4: 5: echo "$c"; 6: echo "Error mssage : $php_errormsg"; 7: ?>

43 運算子之優先序 順序 運算子 1 ! ~ ++ -- (int) (float) (string) (array) (object) @ 2
* / % 3 + - . 4 << >> 5 > >= < <= 6 == != === 7 & 8 ^ 9 | 10 && 11 || 12 ?: 13 = 14 and 15 xor 16 Or


Download ppt "PHP 變數、常數與運算子 變數 常數 運算子 http://ycchen.im.ncnu.edu.tw/www2011/lab/plab1.zip."

Similar presentations


Ads by Google