第6章 PHP基本語法介紹
6.1 Hello World程式
PHP 的程式碼的寫法 是在<?php和?>標籤之內崁入PHP的程式,<?php 代表的是 PHP 程式碼的開頭,?>代表的是程式碼的結束 。 程式碼的每一行後面必須加上分號(;)當作程式的結束。
PHP程式碼的格式一
PHP程式碼的格式二 (不用分行和縮排 )
寫好的網頁程式 要放在: 在瀏覽器輸入http://localhost/ch06/Ex6-11.php測試程式。 (1).個別安裝:C:\Program Files\Apache Group\Apache2\htdocs的目錄或其子目錄下。 (2).單一安裝:c:\appserv\www的目錄或其子目錄下(註:像本書建了ch06子目錄放此章節的程式, 在瀏覽器輸入http://localhost/ch06/Ex6-11.php測試程式。
範例6-1:Ex6-1.php
圖6-1:Hello World程式實例
說明: 看出來了嗎?PHP的程式是崁在html網頁內的<body>和</body>之標籤內,所以真正的PHP語言程式碼是在範例的6~8行。此範例故意將全部的標籤印出來,後面的範例將只敘述PHP的程式碼,省略其他HTML的標籤。PHP 的程式碼的寫法,是在<?php和?>標籤之內崁入PHP的程式。 第8行的echo 語法是 PHP 的語法,用來做輸出用,輸出"Hello! World!"一句話。
echo 語法 echo 是 PHP 的語法,用來做輸出。
範例6-2
圖6-2:斷行程式實例
說明: 1. PHP與HTML的換行方式,PHP 的程式碼中(本文)利用 Enter做的換行動作,並不是在瀏覽器畫面的實際換行,瀏覽器只認得HTML標籤,所以輸出畫面的換行必須在echo的敘述中,加入使用 HTML 語法中的 <br> 換行標籤。(加上 <br>或<p>,可以使得瀏覽器在顯示該字串時產生換行的效果。)
註解 1.「//」 之後的字到該行的結束均為註解,此為C 語言、C++ 語言的註解方式。 3. 「#」 之後的字到該行的結束均為註解,此為UNIX 的 Shell 語言的註解方式。
範例6-3:Ex6-3.php
圖6-3:註解程式實例
不能讓註解陷入巢狀迴圈當中 不能讓註解陷入巢狀迴圈當中,否則會引起錯誤。如下面範例在多行註解/*和*/中,又包含了另一個多行註解( /* 巢狀註解會引起問題 */)。
範例6-4:Ex6-4.php
圖6-4:錯誤註解程式實例
6.2 常數和變數
常數 常數是一個簡單數值的標識名字。如同其名稱所暗示的,在程式執行期間該值並不會改變。 合法的常數名以字母或底線開始,後面跟著任何字母,數字或底線。 常數的範圍是全區域的,也就是說不用管範圍就可以在代碼的任何地方使用。 當常數定義時,前面不需要加「$」 。 常數只能包含標準資料型態(boolean, integer, float, string) 。
常數最常用到的有下列2種函數 define()函數: 用來定義常數。 constant()函數: 用來讀取常數的值。
範例6-5:Ex6-5.php
圖6-5:常數程式實例
表6-1:PHP內建常數
變數 在 PHP 中,變數在PHP中是以“$”(錢字號)來表示!也就是說只要以 $ 開頭的單字是變數, 並且變數名稱有大小寫之分
兩個不同的變數
變數的命名原則 變數的名稱只能夠是a~z(大小寫皆可)、0-9、_(底線),並且不可以由數字開頭
正確的命名方式
比較好的變數命名的原則
變數不需要事先經過宣告 你可以隨時在程式中使用一個新的變數,而不需要事先的宣告。 雖然變數不需要經過宣告,但是一個好的程式設計師,會在規劃的時候,就將各種會使用到的變數名稱、型態規劃和整理出來成檔案,以便在程式撰寫的途中能有依循的標準
表6-2 程式的變數整理
變數的型態 變數的命名和資料型態無關,而是看變數的初始值來決定屬於自己的型態,這個型態指的是變數的種類, 而變數可以PHP提供八種資料型態,分別是:布林值、整數值、浮點數、字串、陣列、物件、資源(resource)、空(NULL)。
變數型態
範例6-6:Ex6-6.php
圖6-6:變數程式實例
預設變數 PHP 為它執行的程式提供了大量的預設變數,當然你在命名變數要避開這些變數。
表6-2:PHP預設變數
表6-2:PHP預設變數(續)
6.3資料型態
布林值型態 值可以是TRUE或FALSE其中之一,用於在類似if的序述中「判斷值」。
布林值型態
範例6-7:Ex6-7.php
圖6-7:布林值程式實例
說明: echo 出來true的值是1, echo 出來flase的值是空(Null)。
整數值型態 整數值型態是最簡單的型態,對應於包括正負數的簡單整數,整數值的範圍是Z = {..., -2, -1, 0, 1, 2, ...}。
範例6-8:Ex6-8.php
圖6-8:整數程式實例
說明: 8進位數和16進位數,當然是以二進位數儲存在電腦內,但是最後輸出來時是以十進位數的轉換結果。
浮點數 浮點數又稱為floats、doubles、real numbers。 浮點數的字長和平台相關,通常最大值是 1.8e308 並具有 14 位十進制數字的精度(64 位 IEEE 格式)。
浮點數範例
字串 PHP字串的表達方式有三種:1.單引號,2.雙引號,3.heredoc語法。第3種heredoc是使用heredoc語法(“<<<”) ,這種方法因為很少人使用,故不介紹 。
1.單引號 這種方式相當的簡單,只需在字串的前後加上單引號( ' )即可。
2.雙引號 若將字串以雙引號( " )圍住,使用法和單引號法相同,有一點要注意的是雙引號內的單引號( ' )會當成字串中的文字使用
表6-3: 跳脫字元
錢($)的符號 當剖析器遇到錢($)的符號時,會把它當是一個變數名稱
取出字串中的字元 要取出字串中的字元,可在字串後面使用大括弧將偏移量括弧起來,就可得到該偏移量在字串中所代表的字元。偏移量的起始值為零(0)
字串連接 要將字串連接起來可以使用點( . )這個運算元,而不是使用加號(+)。
轉換字串 如果數字字串中包含了'.'、'e'、'E'這些字元,在轉換後會視為是浮點數的值。
範例6-9:Ex6-9.php
圖6-9:字串程式實例
陣列 陣列是一個結構性的資料儲存空間,在程式設計上是不可或缺的工具。 陣列的索引,不一定是數字編號,也可以是字串。
陣列
初始化陣列 有幾種方式: 1.直接指定索引值, 2.自動索引, 3.使用array函數
1.直接指定索引值
圖6-10:陣列程式實例
數量陣列(scalar array ) $week[0] = "Monday"; 以數值做索引的陣列稱為「數量陣列」。
聯想陣列(associative array) $week["Thursday"] = 4; 以字串做索引的陣列稱為「聯想陣列」。
2.自動索引
3.使用array函數
二維陣列 二維陣列和多維陣列的初始化與一維陣列方法相同
範例6-11:Ex6-11.php
圖6-11:二維陣列程式實例
也可以寫成如下:
陣列的內部指標 PHP 裡的陣列事實上是利用資料結構中的雙向鍵結串列來維護的
表6-4: PHP 陣列相關函數 (ref. Ex6-array.php)
表6-4: PHP 陣列相關函數(續)
物件 初始化(initialize)物件,可以使用new這個語法。
範例6-12:Ex6-12.php
圖6-12:物件程式實例
資源(resource) 是個特殊的變數,它是被特殊的函式所建立並加以使用。
資料庫連線語法
NULL 這個特殊的值NULL,所代表的意思是變數的值是空的
如果變數符合下列三點之一,變數的值會被視為是NULL 變數的值是NULL (* NULL是不分大小寫的)。 變數並沒有被設定任何的值。 變數己經被unset( )這個函式所刪除了。
自動轉換型態 使用運算元"+",自動地改變資料型態。
強迫型態轉換 要強迫變數轉換資料的型態可使用下列這種方式,在變數前面用括弧住要強迫轉換的型別,在括弧裡面可以包含tabs及空白鍵
允許強迫轉換型別的種類有下列幾種: (int), (integer):轉換成整數。 (bool), (boolean):轉換成布林值。 (float), (double), (real):轉換成浮點數。 (string):轉換成字串。 (array):轉換成陣列。 (object):轉換成物件。
轉換成物件 要將一個數量或字串的變數轉換成物件,變數的值會成為物件的屬性,此屬性的名稱會是'scalar'。
範例6-13:Ex6-13.php
圖6-13:轉換型別程式實例
6.4 PHP運算式/運算子/優先順序
PHP運算子 算數運算子(Arithmetic Operators) 字串運算子(String Operators) 指定運算子(Assignment Operators) 位元運算子(Bitwise Operators) 比較運算子(Comparison Operators) 條件運算子(Conditional Operator) 錯誤控制運算子(Error Control Operators) 執行運算子(Execution Operators) 遞增/遞減運算子(Incrementing/Decrementing Operators) 邏輯運算子(Logical Operators)
算數運算子 算數運算子有加, 減, 乘, 除 , 求餘數等運算。
表6-5 算數運算子
範例6-14:Ex6-14.php
圖6-14:算數運算子程式實例
遞增/遞減運算子(Incrementing/Decrementing Operators) 遞增運算子(++),$a++或++$a每次遞增加1。遞減運算子(--),$a-- 或--$a每次遞增減1。
表6-6遞增/遞減運算子
範例6-15:Ex6-15.php
圖6-15:遞增/遞減運算子程式實例
說明: $op2 = $op1++; : $op1(值=10)先傳回值給$op2(值=10)後,$op1(值=10)自己再加 1存回$op1(值=11)。 $op2 = ++$op1; : $op1(值=11)自己先加 1存回$op1(值=12) ,$op1(值=12)再傳回值給$op2(值=12)後。 $op2 = $op1--; : $op1(值=12)先傳回值給$op2(值=12)後,$op1(值=10)自己再減 1存回$op1(值=11)。 $op2 = --$op1; : $op1(值=11)自己先減 1存回$op1(值=10) ,$op1(值=10)再傳回值給$op2(值=10)後。
字串運算子(String Operators) 字串運算子只有一個,就是「.」,用來將字串連接起來,合併成為新字串。
範例6-16:Ex6-16.php
圖6-16:字串運算子程式實例
指定運算子(Assignment Operators)
表6-7:指定運算子
範例6-17:Ex6-17.php
圖6-17:指定運算子程式實例
位元運算子(Bitwise Operators) 位元運算子有AND 運算子(&)、OR 運算子(|)、Exclusive OR 運算子(^)、NOT 運算子(~)、位元左移運算子(<<)及位元右移運算子 (>>)。
表6-8:位元運算子
範例6-18:Ex6-18.php
圖6-18:位元運算子程式實例
比較運算子(Comparison Operators) 比較運算子有 ==,<,>,<=,>=,!=,<> 。
表6-9:比較運算子
範例6-19:Ex6-19.php
圖6-19:比較運算子程式實例
邏輯運算子(Logical Operators) and, &&, or, ||, xor, ! 各代表邏輯布林運算的 AND, AND , OR , OR , XOR , NOT等運算。
表6-10:邏輯運算子
範例6-20:Ex6-20.php
圖6-20:邏輯運算子程式實例
條件運算子(Conditional Operator) 與許多程式語言一樣,PHP 也可以使用 A ? B : C 形式(A True 則 B 否則 C),其中的 A, B, C 是 expression 形式。
表6-11:條件運算子
範例6-21:Ex6-21.php
圖6-21:條件運算子程式實例
錯誤控制運算子(Error Control Operators) PHP 提供一個錯誤控制運算元「@」,在運算式中如果含有它,則所有的錯誤訊息均會被忽略。
範例6-22:Ex6-22.php
圖6-22:錯誤控制運算子程式實例
執行運算子(Execution Operators) PHP 支援執行運算子backticks(``)(倒單引號,在鍵盤上「數字 1」的左側)的執行運算,在裡頭的字串將被視為 Dos command 來執行,而執行的輸出就是「值」,可以設定給其他變數。
範例6-23:Ex6-23.php
圖6-23:執行運算子程式實例
表6-12:運算子優先等級
6.5選擇性敘述
1.循序性結構: 由上而下的敘述方式,一行敘述執行完畢,再執行下一行。
選擇性結構: 根據判斷條件的成立與否,再決定要執行那一些敘述的結構。
重複性結構: 根據判斷條件的成立與否,決定程式段落回圈主體的執行次數的結構。
if敘述 在選擇性的結構中,使用的就是if 敘述
格式一:
格式二:
格式三:
範例6-24:Ex6-24.php
圖6-27:if敘述程式實例
搭配else敘述 加上 else 可以做「如果...則...否則...」的邏輯判斷,使用if…else…的敘述
格式一:
格式二:
範例6-25:Ex6-25.php
圖6-28:else敘述程式實例
再搭配elseif敘述 當程式的判斷需要不只一個條件時,則需要用到if…elseif…else敘述。
格式一:
格式二:
範例6-26:Ex6-26.php
圖6-29:elseif敘述程式實例
巢狀if敘述 巢狀if敘述就是if 敘述中再用另一個 if 敘述進行判斷。
格式一:
範例6-27:Ex6-27.php
圖6-30:巢狀if敘述程式實例
switch敘述 switch 是很好用的多條件判斷敘述,跟 if...elseif...elseif... 結構相同。 switch敘述的運作方式:當case的值和switch 的值相同時,則case以下的所有的敘述就會被執行,除非在方塊裏遇到break,執行才會被中斷。
圖6-31:switch敘述流程圖
格式:
範例6-28:Ex6-28.php
圖6-32:switch程式實例
6.6 重複性敘述
while while 是一種迴圈的敘述,while 先判斷判斷式的成立與否,如果判斷式為 true,則執行 while 裡的敘述,否則(flase)離開while迴圈。
格式:
範例6-29:Ex6-29.php
圖6-33:while程式實例
do...while 敘述 do...while 敘述也是迴圈敘述,但是 do...while敘述 與 while 敘述不同的地方在於,do...while敘述會先執行 do 裡的敘述一次後才去判斷判斷式是否成立。
格式:
範例6-30:Ex6-30.php
圖6-34:do..while程式實例
for敘述 for 迴圈敘述是一種有條件式的迴圈語法,for 可以指定迴圈開始與結束和遞增的條件,因此可以限定迴圈的次數。
格式:
範例6-31:Ex6-31.php
圖6-35:for程式實例
break指令 break 指令用來跳出目前的迴圈,通常是用在利用 if 敘述判斷到某個符合的條件,而必須馬上跳出迴圈時才使用。
範例6-32:Ex6-32.php
圖6-36:break程式實例
continue 指令 continue 與 break 是相對的指令。break 中斷目前執行的迴圈,continue 則是回到迴圈的開頭,continue後面的敘述則不執行,重新執行迴圈。
範例6-33:Ex6-33.php
圖6-37:continue程式實例
巢狀迴圈 就像其他所有的程式語言一樣,PHP的巢狀迴圈是一個迴圈可在另一個迴圈之內,通常搭配多維陣列來執行。
格式:
範例6-34:Ex6-34.php
圖6-38:巢狀迴圈程式實例
本章結束 謝謝!!