Jollen's PHP 專欄「2.03 PHP 語法結構」裡的所有文章!
jollen 發表於 October 27, 2006 2:25 PM
本節在介紹 PHP 的 if、switch、for、foreach、while、do、break 與 continue 敘述語法,在這一節裡,筆者會介紹這幾個語法的用途與基本觀念。 我們可以視 PHP 程式碼為一些有效的敘述 (valid statements) 所構成的集合,理論上我們可以將 PHP 的敘述分成6 類: □ No-action 被 PHP 計算,但不發生任何動作的敘述,例如:1+2。 □ Action expression 所發生動作,例如:$a=1+2。 □ Assignment 指定值給一個變數,例如:$a="Hello!"。 □ Decision if 與 switch 用來做條件判斷的敘述。 □ Loop for、while 與 do,可以重覆執行一堆敘述。 □...
jollen 發表於 October 27, 2006 2:26 PM
if 的 3 種寫法: 1. if (EXPRESSION) statement; // 當 EXPRESSION 為 true 時,則執行 statement 當 statement 只有一行敘述時,可以省略大括弧。 2. if (EXPRESSION) { statement1; // 當 EXPRESSION 為 true 時,則執行這裡的 statement2; // statements 敘述 (statement block)。 ... } 3. if (EXPRESSION)...
jollen 發表於 October 27, 2006 2:28 PM
else 與 if 語法搭配使用: 1. if (EXPRESSION) { statement1; // 當 EXPRESSION 為 true 時,則執行這裡的 statement2; // statements 敘述 (statement block)。 ... } else { statement3; // 當 EXPRESSION 不為 true 時,則執行這裡的敘述。 statement4; ... } 2. if (EXPRESSION) : statement1;...
jollen 發表於 October 27, 2006 2:51 PM
elseif 的語法也是和 if 配合使用,用來做多層次的邏輯判斷: 1. if (EXPRESSION1) { statement1; // 當 EXPRESSION1 為 true 時,則執行這裡的敘述。 ... } elseif (EXPRESSION2) { statement1; // 當 EXPRESSION2 為 true 時,則執行這裡的敘述。 ... } [elseif ...] else { // 當以上所有的 EXPRESSIONS 都不為 true 時, statement1;...
jollen 發表於 October 27, 2006 2:52 PM
while 是一種迴圈的敘述,語法如下: 1. while (EXPRESSION) { statement1; // 當 EXPRESSION 當 true 時,則執行這裡的敘述。 statement2; ... } 2. while (expr) : statements; ... endwhile; 第 2 種格式則是第一種格式的冒號寫法。 while 執行的過程為:先判斷 EXPRESSION,如果 EXPRESSION 為 true,則執行 while 裡的敘述。範例: <?php $a = 1; $sum =...
jollen 發表於 October 27, 2006 2:54 PM
do...while 敘述也是迴圈敘述,但是 do...while 與 while 不同的地方在於,do...while 一定會先執行 do 裡的敘述 1 次,但是 while 則不一定。因為 while 是先去判斷 EXPRESSION 是否成立,而 do...while 則是先執行 1 次後才去判斷 EXPRESSION。 do...while 的語法: do { statement1; statement2; // 先執行這裡的 statements 一次,然後再判斷 // EXPRESSION, ... // 當 EXPRESSION 當 true...
jollen 發表於 October 27, 2006 2:59 PM
for 迴圈敘述是一種有條件式的迴圈語法,for 與 while 或 do...while 不同的地方在於,for 可以指定迴圈開始與結束的條作,因此可以限定迴圈的次數。 for 迴圈敘述的語法: for (EXPRESSION1; EXPRESSION2; EXPRESSION3) { statements; ... } 其中 EXPRESSION1 為最始條件,EXPRESSION2 為終止條件,EXPRESSION3 為迴圈結束後所要執行的 statement。請看底下的範例: <?php for ($i = 0; $i "; } ?> 執行時,$i = 0 表示 $i 的初始值為 0;$i...
jollen 發表於 October 27, 2006 3:01 PM
foreach 敘述是由 PHP 4 開始所新增的語法,foreach 可以很方便地用來索引陣列資料結構裡的元素。其語法如下: 1. foreach(array_expression as $value) statement 2. foreach(array_expression as $key => $value) statement 第 1 種語法會對陣列 array_expression 做迴圈,並將目前所指元素的值放到 $value 變數裡,然後陣列裡的指標會跟著移到下一個元素的位置。 第 2 種語法則是和第一種語法相同,差別再於這種語法還會將元素的 key 放到 $key 變數裡。 使用 foreach 敘述時,PHP 會自動在迴圈一開始時將陣列的內部指標移到第一個元素的位置,因此不需要呼叫 reset() 函數。另外,foreach 在對陣列做迴圈時,會額外複制一份陣列再做迴圈的動作,這表示 foreach...
jollen 發表於 October 27, 2006 3:01 PM
break 指定用來跳出目前的迴圈,通常是用在利用 if 敘述判斷到某個符合的條件,而必須馬上跳出迴圈時才使用。要注意的是,break 只能跳出一層迴圈,而且 break 只能用在[[迴圈]]敘述裡。 範例: <?php for ($i = 0; ;$i++) { if ($i > 10) break; } ?> 在這個範例裡,for 敘述沒有中止條件。中止條件寫在迴圈的程式裡,利用 if 來判斷,當 $i > 10 時,則執行 break 跳出迴圈。...
jollen 發表於 October 27, 2006 3:30 PM
switch 是很好用的多條件判斷敘述,跟 if...elseif...elseif... 結構相同。switch 語法為: 1. switch (EXPRESSION) { case 1: statement1; // 當 EXPRESSION 的值為 1 (integer) 時,則執行這裡 statement2; // 的敘述… ... break; case 2: statement10; // 當 EXPRESSION 的值為 2 (integer) 時,則執行這裡 statement20; //的敘述… … default: // 當...
jollen 發表於 October 27, 2006 3:40 PM
我們寫程式的時候,替程式加上註解是一種很好習慣,往後才能更容易維護程式。PHP 的註解有 2 種形式: 1. 到行尾的註解 $a = 5; // assign 5 to $a 表示 // 之後到該行的結束均為註解 2. 註解區 /* Variables & Assignment */ $a = 5; /* assign 5 to $a */ $b = $a; /* assign $a to...
jollen 發表於 October 27, 2006 3:40 PM
PHP 的 require() 和 C 語言的 #include 具同樣的效果,將指定的檔案插到 require() 所在的位置,例如: require("input.php"); 我們可以將有關輸入的函數寫在 input.php 裡,在需要用到時再 require 進來,這麼做不但可以增加程式的可讀性也方便除錯。 我們修改 example_2-47.php,將 PHP 程式的部份存到另外一個檔案裡,然後利用 REQUIRE 命令將程式碼引起來。 將 example_2-47.php 程式碼修改為: <html> <head> <title>註解的範例</title> </head> <body> <p> <?php require("add.inc"); ?> </p> </body> </html> 接著將底下的程式存成 add.inc 檔案即可:...
jollen 發表於 October 27, 2006 3:41 PM
PHP 的 include() 功用和 require 一樣,不同的是,require() 不能用在判斷敘述或迴圈裡,但 include() 可以,例如: <?php $files = array('a.inc', 'b.inc', 'c.inc'); for ($i = 0; $i 如果我們需要在 if、do、while 等判斷或是迴圈裡引入檔案的話,就必須使用 include 命令。require 只能單獨寫成一行。 除此之外,require() 與 include() 對於錯誤處理的方法也不同。require() 遇到錯誤時會產生 fatal error 的錯誤訊息,而 include() 則是只會產生 warning 訊息。例如,當 require() 無法引入指定的檔案時,便會產生...
jollen 發表於 October 27, 2006 3:41 PM
PHP 4 新增了 require_once() 的用法,功能上,require() 與 require_once() 是一樣的,唯一的差別在於如果 require_once() 所指定的檔案已經被引入過了,那麼 require_once() 就不會再重覆做一次引入的動作。 對於 require_once() 的使用時機,常見的有下列幾點: 1. PHP 程式執行期間,會多次引入相同的檔案。 2. 確保不會因為重覆引入相同的檔案,而產生函數重覆定義 (function redefinitons) 的錯誤。 3. 確保不會因為重覆引入相同的檔案,而產生變數重覆給值 (value reassignments) 的錯誤。 要使用 require_once() 必須安裝 PHP 4.0.1pl2 以上的版本。...
jollen 發表於 October 27, 2006 3:42 PM
相對於 require_once(),PHP 4 也新增了 include_once() 的用法。功能上,include() 與 include_once() 是一樣的,唯一的差別在於如果 include_once() 所指定的檔案已經被引入過了,那麼 include_once() 就不會再重覆做一次引入的動作。 對於 include_once() 的使用時機,常見的有下列幾點 (與 require_once() 相同): 1. PHP 程式執行期間,會多次引入相同的檔案。 2. 確保不會因為重覆引入相同的檔案,而產生函數重覆定義 (function redefinitons) 的錯誤。 3. 確保不會因為重覆引入相同的檔案,而產生變數重覆給值 (value reassignments) 的錯誤。 要使用 include_once() 必須安裝 PHP 4.0.1pl2 以上的版本。...
jollen 發表於 October 27, 2006 3:42 PM
我們可利用 define() 函數來定義常數,例如: <?php define("NAME", "jollen"); ?> 表示定義 NAME 常數,其值為 jollen。注意常數與變數一樣有大小寫之分。...
jollen 發表於 October 27, 2006 3:45 PM
continue 與 break 是相對的指令。break 中斷目前執行的迴圈,continue 則是回到迴圈的開頭,執行「下一次」的迴圈。 例如: <?php for ($i = 0; $i 輸出結果為: 12346789 我們可以把 break 看到是跳出目前這層迴圈,把 continue 看到是跳到迴圈的最後。為什麼呢? 當 if 判斷到 $i 等於 5 時,continue 指令會跳到迴圈的最後,記得在前面介紹 if敘述時講過,在迴圈的最後,$i++ 會先被執行一次,然後再判斷中止條件是否成立,也就是 $i...