Presentation is loading. Please wait.

Presentation is loading. Please wait.

第六章 迴圈與陣列.

Similar presentations


Presentation on theme: "第六章 迴圈與陣列."— Presentation transcript:

1 第六章 迴圈與陣列

2 章節目錄 迴圈 中斷指令 陣列 以array函數方式規劃陣列 使用foreach存取陣列 表單與陣列 本章結論 重點提示 問題與討論

3 迴圈 for( ) while( ) do while( ) while與do while迴圈比較 返回章節目錄

4 for迴圈-1/5 for迴圈內有三個參數,這三個參數需互相搭配迴圈才會執行,所以是條件較為嚴謹且複雜的迴圈型式。 for迴圈語法的基本架構為: for(變數初始值;變數的判斷式;每執行一次迴圈後變數的變化){ 重覆執行的語法 }

5 for迴圈-2/5 請觀察以下範例執行的結果,若沒有使用迴圈,要寫多少行語法?請依本書第6-2頁編輯PHP網頁(「6」資料夾內「for.php」)。

6 for迴圈-3/5 產生重複執行的語法為:「for ($i=1;$i<=10;$i++)」,而for( )內有三個參數,其代表意義如下: 定義 語法 語法說明 變數初始值 $i=1; $i的初始值為1 判斷變數是否可在迴圈內執行 $i<=10; 當$i小於等於10的情況下 每執行一次迴圈後變數的變化 $i++ 每跑完一次迴圈$i就加1

7 for迴圈-4/5 一開始$i的值為1,符合「$i<=10;」的條件,所以就進入迴圈。 每跑完一次迴圈,$i的值就會加1。
條件不成立 $i++ 條件成立 echo "i->".$i."<br>"; echo "<hr>";

8 for迴圈-5/5 for迴圈有「固定的範圍」與「固定的變化」這兩個限制。 for迴圈適合固定數量的迴圈運用。
若資料沒有固定數量或沒有固定變化,可使用while或do while。 返回迴圈

9 while迴圈-1/3 while迴圈的格式: while (條件判斷){ 條件成立時會執行的迴圈語法 }
寫一個從1到9變化的迴圈,當迴圈條件成立時會如何執行?請依本書第6-4頁編輯PHP網頁(「6」資料夾內「while1.php」)。

10 while迴圈-2/3 當$i小於10的情況下,可以執行大括弧內的迴圈程式。 而一開始$i的值為1,符合條件則進入迴圈。
條件不成立 $i++; 條件成立 echo "i=".$i."<br>";

11 while迴圈-3/3 若變數初始值不符合進入迴圈的條件,while迴圈會如何執行?請依本書第6-5頁編輯PHP網頁(「6」資料夾內「while2.php」)。 因$i的初始值為11,已大於10,條件不成立故不執行迴圈。 返回迴圈

12 do while 迴圈-1/3 do while迴圈與while迴圈非常相似,do while迴圈的格式: do{ 執行的迴圈語法
do while迴圈是「先執行迴圈內的語法再做判斷」。我們寫一個從1到9變化的迴圈,當迴圈條件成立時會如何執行?請依本書第6-6頁編輯PHP網頁(「6」資料夾內「dowhile1.php」)。

13 do while 迴圈-2/3 當$i小於10的情況下,可以執行大括弧內的迴圈程式。 而一開始$i的值為1,符合條件則進入迴圈。
條件不成立 $i++; 條件成立 echo "i=".$i."<br>";

14 do while 迴圈-3/3 若變數初始值不符合進入迴圈的條件,while迴圈會如何執行?請依本書第6-7頁編輯PHP網頁(「6」資料夾內「dowhile2.php」)。 do while迴圈先進到迴圈內執行$i++後再做判斷,偵測到不符合條件則跳出,所以do while迴圈至少執行一次。 返回迴圈

15 while與do while迴圈比較 執行順序 若與條件不合 while迴圈 先判斷再執行 迴圈內的語法一次都不執行 dowhile迴圈
先執行再做判斷 只執行一次 返回迴圈

16 中斷指令 在迴圈進行的過程中,我們希望迴圈能做各種不同的中斷或退出,那該怎麼做呢?
PHP提供了三種中斷指令:break、continue與exit,我們可由這三個指令瞭解如何中斷迴圈或特定語法的執行。 三種中斷指令: break continue exit 返回章節目錄

17 break- 1/2 break這個指令在前面介紹switch case時有出現過,這裡又再出現一次,break這個指令會對迴圈產生什麼影響呢? 請依本書第6-8頁編輯PHP網頁(「6」資料夾內「break.php」)。

18 break- 2/2 若$i等於5(請注意條件判斷式裡「等於」需用兩個「=」),echo顯示訊息後執行「break」指令。
break指令會跳出最近的一個迴圈。執行後會跳出迴圈,執行「echo "結束執行";」語法。 返回中斷指令

19 continue- 1/2 break指令會跳出迴圈而造成中斷,那continue呢?
請依本書第6-10頁編輯PHP網頁(「6」資料夾內「conitue.php」)。

20 continue- 2/2 若$i等於5(請注意條件判斷式裡「等於」需用兩個「=」),echo顯示訊息後執行「continue」指令。
返回中斷指令

21 exit-1/2 break與continue兩個指令常用於迴圈內,用來控制迴圈的跳出或中止後繼續執行。
break也用於switch case,用來跳出case內語法。 exit除了可用於迴圈外,也可用於一般語法內,讓我們先來看看exit於迴圈內所造成的影響。 請依本書第6-11頁編輯PHP網頁(「6」資料夾內「exit.php」)。

22 exit-2/2 若$i等於5(請注意條件判斷式裡「等於」需用兩個「=」),echo顯示訊息後執行「exit」指令。
exit指令會中斷之後所有網頁(含html部分)語法的執行,所以執行exit指令後,網頁會停止所有動作。 返回中斷指令

23 陣列 當我們知道如何用迴圈跑出多筆資料後,這些資料要如何儲存呢?假設我現在要輸入五個同學3個科目成績,要建立15個變數嗎?「陣列」可解決這個問題。 陣列初始化 陣列的索引值(數字) 陣列的索引值(文字) 返回章節目錄

24 陣列初始化- 1/2 現在我們設計一個成績單網頁,要儲存編號1到5號同學的國文成績,該如何儲存呢?
可用一個大箱子內放五個小箱子,這五個小箱子都有一個編號,小箱子分別放這五個同學的國文成績。

25 陣列初始化- 2/2 找資料時說明要找大箱子內哪一個編號的小箱子,就可以找出資料。 大箱子就是「陣列」,小箱子的編號,就是「索引值」。
「索引值」該如何設定呢?PHP提供了多種方式。 返回陣列

26 陣列的索引值(數字) -1/5 陣列的索引值由0開始。 陣列名稱後接著中括弧[],中括弧內可選擇輸入索引值或空白。
如果我們給予索引值,可由以下練習瞭解陣列如何給值與顯示資料。請依本書第6-14頁編輯PHP網頁(「6」資料夾內「array1.php」)。

27 陣列的索引值(數字) -2/5 有一個陣列叫做$chinese,這一個陣列從編號(索引值)0到4分別儲存80、60、90、50、70等分數,所以在儲存完資料後緊接著將$chinese陣列裡編號(索引值)為0到4的資料顯示在網頁上。 當我們設定陣列資料時,若不給予索引值編號,這些陣列欄位是否仍依照索引值編號進行資料存取呢?請依本書第6-15頁編輯PHP網頁(「6」資料夾內「array2.php」)。

28 陣列的索引值(數字) -3/5 當我們宣告陣列時,若沒有指定索引值編號,資料是由0這個編號(索引值)開始儲存。

29 陣列的索引值(數字) -4/5 當我們以作資料儲存時若索引值編號不連續,且有多筆資料遺漏了 索引值。請問陣列內的資料會如何排列呢?
當我們以作資料儲存時若索引值編號不連續,且有多筆資料遺漏了 索引值。請問陣列內的資料會如何排列呢? 請依本書第6-16頁編輯PHP網頁(「6」資料夾內「array3.php」)。

30 陣列的索引值(數字)-5/5 您會發現到陣列索引值為3的資料是60,下一筆資料並無陣列索引 值,而這筆資料索引值預設加一,也就是索引值為4的位置內容為 90。 陣列索引值為6的資料是50,下一筆資料並無陣列索引值,而這筆 資料索引值預設加一,也就是索引值為7的位置內容為70。 返回陣列

31 陣列的索引值(文字) PHP陣列不僅可以用數字做索引值,也可用文字作為索引值。
請依本書第6-17頁編輯PHP網頁(「6」資料夾內「array4.php」)。 返回陣列

32 以array函數方式規劃陣列 本節將介紹array( )函數建立數字型態或文字型態的陣列,您可與前 述建立陣列的方式作比較。
索引值=>欄位的內容 //如果後面還有欄位,請加上逗點「,」 ); //右括弧旁需加上分號「;」 以array函數建立數字型態索引值陣列 以array函數建立文字型態索引值陣列 返回章節目錄

33 以array函數建立數字型態索引值陣列-1/3
請依本書第6-18頁編輯PHP網頁(「6」資料夾內「array5.php」)。 請將這個例子與array1.php做一個比較。 給予陣列5筆資料,所以array( )函數內放入5筆資料,而索引值一定 由0開始,迴圈由0開始執行。

34 以array函數建立數字型態索引值陣列-2/3
假設班上座號1、3、6、8、9號同學的國文成績,我們希望陣列的 索引值就是座號,那這個陣列該怎麼規劃呢?請依本書第6-19頁編 輯PHP網頁(「6」資料夾內「array6.php」)。

35 以array函數建立數字型態索引值陣列-3/3
若忘記給予索引值,資料會如何排列呢?請依本書第6-20頁編輯 PHP網頁(「6」資料夾內「array7.php」)。您會發現到沒有標示 陣列索引值的欄位,會依照前一筆資料的索引值自動加一,例如「90」分這一筆記錄並沒有索引值,而前一筆記錄「60」的索引值 為3,所以「90」分這一筆記錄索引值設定為4。 返回以array函數方式規劃陣列

36 以array函數建立文字型態索引值陣列 請依本書第6-21頁編輯PHP網頁(「6」資料夾內「array9.php」)。
請留意本例中索引值為文字型態。 返回以array函數方式規劃陣列

37 使用foreach存取陣列 我們可使用for迴圈讀取陣列的內容,但for迴圈條件判斷式必 須設定起始值與範圍,如果陣列資料屬於變動狀態,很難設定for迴 圈的範圍,且for迴圈無法判斷欄位是否有值,需加寫if條件判斷式 判斷。存取陣列時建議使用foreach取代for迴圈。 foreach基本的格式如下: foreach(陣列名稱 as 變數名稱) 或 foreach(陣列名稱 as 索引值 => 變數名稱) 當foreach開始執行時,陣列內部的指標會自動指向第一個欄位。 foreach第一種格式 foreach第二種格式 返回章節目錄

38 foreach第一種格式-1/4 foreach第一種格式為: foreach(陣列名稱 as 變數名稱)。
請依本書第6-22頁將array6.php修改為foreach型式的PHP網頁(「6」資料夾內「foreach1.php」)。

39 foreach第一種格式-2/4 foreach語法執行時將陣列的索引值歸零(指向第一筆記錄),然後每 次執行迴圈時依序將陣列索引值所儲存的內容放入$value1變數中, 直到陣列裡每一個內容都讀取為止。 比較一下for迴圈與foreach語法的差異: for迴圈 foreach迴圈 for ($a=0; $a<5; $a++) echo "$chinese[$a] <br>" ; foreach ($chinese as $value1) echo $value1."<br>";

40 foreach第一種格式-3/4 文字型態索引值陣列若要以for迴圈依序取值,因為索引值不是「數 字」,所以設計上困難度頗高,但若使用foreach,您可以很快速的將 所有資料列出。 請依本書第6-23頁將設計foreach型式的PHP網頁(「6」資料夾內「foreach2.php」)。

41 foreach第一種格式-4/4 當我們設計陣列時,若中間有幾個索引值並沒有儲存資料,我們需使用條件判斷式進行判斷,如使用foreach,那會如何呢? 請依本書第6-24頁設計foreach型式的PHP網頁(「6」資料夾內「foreach3.php」)。 返回使用foreach存取陣列

42 foreach第二種格式-1/2 foreach第二種格式為 foreach(陣列名稱 as 索引值 => 變數名稱)
請依本書第6-25頁修改foreach3.php為可利用foreach語法顯示索引值(「6」資料夾內「foreach4.php」)。

43 foreach第二種格式-2/2 請您留意foreach4.php內foreach語法:
foreach ($chinese as $key1 =>$value1) echo "座號".$key1."同學的成績為:".$value1."<br>" ; 以foreach語法將陣列 $chinese中資料依序取出,並將索引值存入 $key1變數,而內容放到$value1變數內。第11行則將索引值($key1) 與內容($value1)顯示。 返回使用foreach存取陣列

44 表單與陣列-1/4 表單網頁設計時,您可能會提供很多的元件給使用者使用,但您必須 考慮接收端PHP網頁也得建立很多$_POST或$_GET陣列變數來接收 資料。 表單網頁設計時可將多個元件的name命名為同名的元件以方便 接收,我們在此以核選框為例。 表單上核選框checkbox本身就可以提供複選,但如果選項以分組的 方式設計成多組選項讓使用者勾選,接收端PHP網頁接收資料時就 可用foreach方式處理資料。

45 表單與陣列-2/4 請依本書第6-26頁設計表單網頁(「6」資料夾內「 multicheck.htm 」)。

46 表單與陣列-3/4 以Linux選項為例,您可看到這三個選項的name是同名:
<input type="checkbox" value="fedora" name="linux[]">fedora <input type="checkbox" value="opensuse" name="linux[]">opensuse <input type="checkbox" value="ubuntu" name="linux[]">ubuntu 這幾個選項的name都是linux[],代表這是一個陣列,名稱是linux, 所以這三個選項不論哪一個選項勾選,接收端PHP網頁收到的變數 名稱為linux。

47 表單與陣列-4/4 請依本書第6-27頁設計接收資料的PHP網頁(「6」資料夾內「 multicheck.php 」)。 返回章節目錄

48 本章結論 透過本章的介紹,可讓大家更熟悉迴圈與陣列,並利用陣列處理同 性質的大量資料。
透過本章的介紹,可讓大家更熟悉迴圈與陣列,並利用陣列處理同 性質的大量資料。 使用陣列可降低變數的數量,再搭配foreach語法,可降低陣列存取 的困難。 您也看到PHP網頁語法行數愈來愈多,有些語法若經常使用,我們 可以將這些語法集中起來,建立自訂函數,就可以減少程式碼,節 省PHP網頁開發時間。 而除了自訂函數外,有些資料分析與處理,其實不必自己動手設 計,PHP就提供不少的系統函數可以使用。例如處理日期時間等資 訊,系統提供不少相關函數,可快速運用及減少程式碼的開發,避 免不必要的重複。下一章將為各位介紹「函數」。 返回章節目錄

49 重點提示-1/3 for迴圈語法的基本架構為: for(變數初始值;變數的判斷式;每執行一次迴圈後變數的變化) { 重覆執行的語法 }
while迴圈語法的基本架構為: while (條件判斷) {條件成立時會執行的迴圈語法} do while迴圈語法的基本架構為: do{執行的迴圈語法} while (條件判斷);

50 重點提示-2/3 do while迴圈的while( )這一行有加上分號「;」。
break指令控制迴圈的跳出及用於switch case內跳出case區塊。 continue指令控制迴圈中止後繼續執行。 exit除了可用於迴圈外,也可用於一般語法內,執行後網頁會停止所 有動作。 宣告陣列若沒有指定索引值編號,資料是由索引值編號0開始儲存, 以array方式規劃陣列其格式為 陣列名稱=array( 索引值=>欄位的內容 //如果後面還有欄位,請加上逗點「,」 ); //右括弧旁需加上分號「;」 foreach基本的格式如下: foreach(陣列名稱 as 變數名稱) foreach(陣列名稱 as 索引值 => 變數名稱) 返回章節目錄

51 問題與討論-1/2 1.請說明for迴圈內三個參數意義。 2.當條件不成立時,while及do while迴圈會執行嗎?
3.當條件成立,希望能中斷網頁的執行,請問該使用哪一個 中斷指令? 4.當條件成立,希望能跳出最近的迴圈,請問該使用哪一個 中斷指令? 5.當條件成立,希望能中止現在的迴圈而繼續執行下一個迴圈 ,請問該用哪一個中斷指令?

52 問題與討論-2/2 6.PHP陣列可否使用文字當作索引值?請舉例。 7.PHP陣列數字索引值是由哪一個數值開始?
8.foreach語法如何顯示出索引值?請舉例。 9.核選框若要以分組方式設計,該如何設計? 10.若要接收分組的核選框資訊,該如何判斷分析目前接收的資料? 返回章節目錄


Download ppt "第六章 迴圈與陣列."

Similar presentations


Ads by Google