PHP5與MySQL5 入門學習指南 凱文瑞克 著 第 12 章 迴圈指令.

Slides:



Advertisements
Similar presentations
分享人:張益源. 個人資料介紹 姓名:張益源 畢業:體育系 97 級 專長:田徑、籃球、游泳 任教學校:慈濟大學實驗國民小學 學校職務:體育兼資訊老師.
Advertisements

醫學美學之我見ー肉毒桿菌 班級:應日三乙 姓名:蔡雅卉 學號: 497E0076. 前言 現在的人,已經把 整型看做是微不足 道的事情了。即使 只是戴牙套、局部 雷射、割雙眼皮、 打美白針、肉毒桿 菌等等,都可以在 身體上做不同的改 變,而讓自己更滿 意自己的外表。
第5章 表格的设计与 制作. 内容提要 表格的创建、编辑 表格的属性设置 特效表格的制作 布局表格的基本操作 表格和布局表格的应用.
Web 开发基础 第二章 表格与页面布局. 回顾 Internet 和 万维网 网页的工作原理 网页的基本结构 标记及其属性 段落标记,图片标记,超级链接标记 相对路径,绝对路径,物理路径.
HyperText Markup Language
第六章 网页设计与制作基础.
白玉苦瓜 余光中.
第 4 章 PHP 基本語法.
职业教育.课程改革.项目课程 江苏省太仓中等专业学校校长 江苏省职业教育教学改革创新指导委员会委员 江苏省职业教育课程开发研究中心组组长
第4章 條件判斷與迴圈 Java 2 程式設計入門與應用.
迴圈 迴圈基本觀念 while迴圈 do 迴圈 for迴圈 巢狀迴圈 迴圈設計注意事項 其他控制指令 迴圈與選擇的組合.
第十一課 菜園 6-11.
第5章 HTML 標籤介紹.
第8讲 HTML与PHP基础 静态网页 vs. 动态网页.
岡山區103年第12次 登革熱聯繫會報會議 岡山區公所 103年12月30日 1.
第7章 表 格 清华大学出版社.
第三讲 站点链接与表格布局.
教学内容 1、演示并讲解用表格布局制作的网页 2、用表格制作网页.
——奧科特公開及內部培訓 系列課程(三)之十一
网页 设计与制作.
幸福大讲堂 也谈老年朋友的 “老有所□” 爸妈在线专家宣讲团 ——老年朋友如何乐度后半生概述 主讲:钱锡安
内部审计程序 计划阶段:审计计划 实施阶段:审计证据 报告阶段:审计报告 后续审计:.
模块1 网页设计基础 实训1 体验HTML文档 1.1 网页基础知识 1.2 网站配色方案 1.3 网站设计常用软件
第3章 JavaScript语言基础.
让微笑伴您一生.
使用HTML製作個人網頁 柴惠敏 台灣大學 物理治療學系.
经 络 学.
Ch07 PHP程式基礎 網頁程式設計.
自然與生活科技領域 認識太陽能 蘇紋琪、石明玉.
Mike Wu Morrison Taiwan Sep 15th, 2011
教師: 陳明瑤 電郵: 網際網路應用-網頁設計3 教師: 陳明瑤 電郵:
PHP5與MySQL5 入門學習指南 凱文瑞克 著 第 9 章 常數.
PHP5與MySQL5 入門學習指南 凱文瑞克 著 第 13 章 陣列應用.
PHP +MySQL快速入門 Lesson 4.
網路概念 APACHE PHP MYSQL HTML BY 董仔 08/01/14.
Cookie 存取Cookie Cookie有效時間 Session 存取Session session 函數
程序设计期末复习 黎金宁
條件判斷指令 -if 指令 -switch 指令 迴圈指令 - for 迴圈 - while迴圈 - break、continue 指令
PHP 程式流程控制結構.
第3 章 VBScript的控制结构.
Cookie 存取Cookie Cookie有效時間 Session 存取Session session 函數
PHP5與MySQL4 入門學習指南 凱文瑞克 著 第 16 章 檔案處理.
PHP +MySQL快速入門 Lesson 3.
2012年十月二十九号 Do Now Write the following in pinyin: 1) 今天是七月十九号吗
W3C标准网页制作 主讲教师:张 涛.
第三章 C# 基础知识.
My favorit subject is science .
Today is Monday 高年級晨間美語.
條件判斷指令 -if 指令 -switch 指令 迴圈指令 - for 迴圈 - while迴圈 - break、continue 指令
第六章 迴圈與陣列.
11/15 今天的学习目标 (Today’s Learning Objectives)
学年第一学期 天津华苑枫叶国际学校校历 Maple Leaf International School-Tianjin, HuaYuan  School Year- 1st semester-Calendar.
服事者的心 A Good Servant Mind
HTML 103 互動式網頁 助教:黃毓瑩.
網站(web) 授課:方順展.
XML備份MySQL資料庫 <html> <head>
第3章 JavaScript基本语句.
Unit5 What do you do on Saturdays?
Ch08 陣列 網頁程式設計.
樂樂請假了 尊重的故事 資料來源:臺北縣國民小學品德教育手冊 故事來源:臺北縣國民小學品德教育手冊 網路小故事
目标 流程控制 字符串处理 C# 的类和对象 C# 访问修饰符 C# 构造函数和析构函数.
PHP程式設計 五、程式流程控制結構 建國科技大學 資訊管理學系 饒瑞佶.
網頁設計實務- PHP 與資料庫整合.
僅首頁出現本title即可 責任的故事(二年級) 生命最美麗動人的本能 簡報製作:瑞柑國民小學 鄭雙慧 文/ 何秀芳.
Do While 迴圈 東海大學物理系‧資訊教育 施奇廷.
分頁.
第6章 PHP基本語法介紹.
古蹟知性之旅 我和新港奉天宮有個約 報告人:陳 映 竹 傅 湘 甯.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
Unit 2 My Week A Let’s learn 绿色圃中小学教育网
Presentation transcript:

PHP5與MySQL5 入門學習指南 凱文瑞克 著 第 12 章 迴圈指令

本章大綱 12-1 FOR迴圈 12-2 巢狀FOR迴圈 12-3 FOREACH迴圈 12-4 WHILE迴圈 12-5 BREAK 12-6 CONTINUE 問題與討論

12-1 FOR迴圈 使用迴圈指令來解決重複計算的問題。 已知迴圈的起始值及終止值, 或已知需要的迴圈次數時, 我們會使用 FOR 指令。 格式如下: for (起始值 ; 迴圈判斷條件 ; 增減值) { 迴圈敘述 } - 起始值是在 for 指令一開始時設定所需指標變數或運算的值。 - 迴圈判斷條件是用來判斷 for 迴圈是否要繼續執行的依據。 - 依增減值改變變數內容

1: <html> 2: <title>FOR迴圈</title> 3: <body> 4: <?php 5: for ($A = 0 ; $A<=10 ; $A++) { 6: echo "$A " ; 7: echo "<br>" ; 8: } 9: ?> 10: </body> 11: </html> 第 5 行 for 迴圈起始值為 $A=0, 迴圈判斷條件是 $A<=10, 增減值為 $A++。第 6-7 行為迴圈敘述, 顯示 $A 的內容。 第 8 行迴圈結束。

遞減範例 1: <html> 2: <title>遞減迴圈</title> 3: <body> 4: <?php 5: for ($A = 10 ; $A>=0 ; $A--) 6: echo "$A <br>" ; 7: ?> 8: </body> 9: </html> 遞減範例 $A起始值設為 10, 每次迴圈 $A 減 1, 直到判斷條件 $A>=0 不成立為止。

程式的第 5-11 行設定陣列的內容。第 13-14 行是一個 HTML 標籤, 表示一個表格的開始, 並且設定表格的屬性邊線(border) 的寬度為 5, 表格的總寬度為 560。<tr> 表示表格中一列的開始。第 16 行設定一個迴圈使得 $A 由 0 到 6。第 17 行 <td> 表示表格中一個欄位的開始, 並設定欄位的寬度為 80, 然後顯示 $Week 陣列的內容。 $A 的值由 0 開始, 所以先擷取 $Week[0] 的值即 "Sunday" 顯示在網頁上, </td> 則表示一個欄位的結束。然後 $A 的值加 1, 其值小於 6 迴圈繼續執行。 <td> 又設定一個欄位的開始, 並擷取 $Week[1] 的值, 依此類推直到迴圈結束。此時網頁上會出現星期日到星期六。第 20行 </td> 表示一個列結束。第 21 行 </table> 則是表格的結束。 1: <html> 2: <title>迴圈應用</title> 3: <body> 4: <?php 5: $Week[0] = "Sunday" ; //設定陣列Week的內容 6: $Week[1] = "Monday" ; 7: $Week[2] = "Tuesday" ; 8: $Week[3] = "Wednesday" ; 9: $Week[4] = "Thursday" ; 10: $Week[5] = "Friday" ; 11: $Week[6] = "Saturday" ; 12: ?> 13: <table border=5 width=560> 14: <tr> 15: <?php 16: for ($A=0 ; $A <=6; $A++) 17: echo "<td width=80>$Week[$A]</td> " ; 18: ?> 19: </tr> 20: </table> 21: </body> 22: </html>

1: <html> 2: <title>迴圈</title> 3: <body> 4: <?php 5: $Week[0] = "Sunday" ; //設定陣列Week的內容 6: $Week[1] = "Monday" ; 7: $Week[2] = "Tuesday" ; 8: $Week[3] = "Wednesday" ; 9: $Week[4] = "Thursday" ; 10: $Week[5] = "Friday" ; 11: $Week[6] = "Saturday" ; 12: ?> 13: <table border=0 width=560> 14: <tr> 15: <?php 16: for ($A=0 ; $A <=6; $A++) 17: echo "<th width=80>$Week[$A] " ; 18: echo "<tr>" ; 19: for ($I=1 ; $I<=31; $I++){ 20: echo "<td align=center>$I" ; 21: if ($I % 7 == 0 ) 22: echo "<tr>" ; 23: } 24: ?> 25: </table> 26: </body> 27: </html> 第 18 行表示下一列的開始。第 19 行是一個 for 迴圈, $I 由 1 到 31 表示一個月的 31 天。每一個日期要放置在一個欄位中, 所以在第 20 行 <td> 表示一個欄位的開始, align屬性則表示顯示的文字要在欄位的中央 (center) , 接著顯示日期 $I。因為一週是七天, 所以每七天就應該要換到下一列顯示, 所以第 21 行 if 判斷式來判斷是否換到下一列。 觀念是當 $I 可被 7 整除時就表示已經顯示過 7 個日期應該要換到下一列。所以當 if 判斷式為真時, 第 22 行以 <tr> 標籤產生新的一列。 . 月曆雛型

特殊的FOR迴圈 for ($i=0; $i<=10 ; $i--) for ( ; ; ) for ($i=0 ; $i<=10; $j++) 以上所有的for指令假設在迴圈敘述內不會改變 $i 的值, 那麼三個 for 迴圈都是無窮迴圈。

for ($i=0; $i<=10 ; $i--) 因為 $I 從 0 開始, 而每迴圈一次 $I 的值都要遞減 1, 那麼 $I 的值永遠小於 10, 因此 $i<=10 永遠為真而產生無窮迴圈。

for ( ; ; ) 因為 for 迴圈三項條件均沒有設定, 因此沒有離開迴圈的條件而產生無窮迴圈。

for ($i=0 ; $i<=10; $j++) 第三項增減值是變數 $j 做遞增。而 $i 的起始值設為 0 後就沒有再改變過, 那麼$i 的值當然永遠小於 10, 迴圈自然沒有機會停止。

12-2 巢狀FOR迴圈 for 迴圈內還可以有 for迴圈 格式 for ($I=0; $I<=10; $I++){ echo $I; for ($J=1; $J<=9; $J++) echo $J; }

1: <html> 2: <title>統計表</title> 3: <body> 4: <?php 5: $s = array (0,15,10,20,17,3,8) ; 6: echo "銷售量統計表<p>" ; 7: for ($A=1 ; $A<=6; $A++){ 8: echo "星期 $A : " ; 9: $s[0]+=$s[$A] ; 10: for ($I=1 ; $I<= $s[$A]; $I++) 11: echo "*" ; 12: echo " $s[$A]<br>" ; 13: } 14: echo "<p>總量 : $s[0]" ; 15: ?> 16: </body> 17: </html>

2: <title>統計表</title> 3: <body> 4: <?php 第 5 行設定了 $s 為一個陣列。 第 7 行是 for 迴圈使得 $A 由 1 遞增到 6。第 8 行顯示星期。第 9 行將每天的銷售量加總到 $s[0]。第 10 行設定一個內迴圈使得 $I 的值由 1 遞增到 $s[$A]。例如 $A=1 時, $s[$A] 就表示取得 $s[1] 的內容, 而 $s[1] 的內容為 15, 所以內迴圈會由 1 遞增到 15。第 11 行顯示一個 "*" 字元, 當內迴圈由 1 到 15 則第 11 行會被執行 15 次, 故顯示 15 個 "*"。 因為迴圈並沒有加上大括弧所以迴圈敘述只有一行, 也就是說第 12 行並沒有包含在迴圈敘述中, 所以當 $I 迴圈執行完畢後才會執行第 12 行顯示 $s[1] 的內容, 然後由標籤 <br> 表示換到下一行。依此重複執行, 直到迴圈結束。 最後第 14 行顯示 $s[0] 的內容, 就是本星期的銷售總量。 1: <html> 2: <title>統計表</title> 3: <body> 4: <?php 5: $s = array (0,15,10,20,17,3,8) ; 6: echo "銷售量統計表<p>" ; 7: for ($A=1 ; $A<=6; $A++){ 8: echo "星期 $A : " ; 9: $s[0]+=$s[$A] ; 10: for ($I=1 ; $I<= $s[$A]; $I++) 11: echo "*" ; 12: echo " $s[$A]<br>" ; 13: } 14: echo "<p>總量 : $s[0]" ; 15: ?> 16: </body> 17: </html> $s[0] 用來計算並儲存一週的總銷售量 $s[1] 到 $s[6] 則分別儲存星期一到星期六 的銷售量。

12-3 FOREACH迴圈 foreach, 專門使用在陣列操作。 二種格式分述如下: 1) foreach (array_expression as $value) 2) foreach (array_expression as $key => $value)

1) foreach (array_expression as $value) 格式 foreach (陣列名稱 as $value){ 迴圈敘述 ; } 在執行時陣列的 index 先歸零, 意即 index 指向陣列第 0 個元素 (因為陣列從 0 開始), 然後每次迴圈依序將陣列元素的內容放入 $value 變數中, 直到陣列中每一個元素都執行一次。

1: <html> 2: <title>Foreach</title> 3: <body> 4: 月份縮寫: <br> 5: <?php 6: $month = array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug', 7: 'Sep','Oct','Nov','Dec') ; 8: foreach ($month as $value) 9: echo "$value <br> " ; 10: ?> 11: </body> 12: </html> 第 6-7 行設定陣列$month的內容。 第 8 行 foreach 會先將 index 歸零, 然後依陣列內容 'Jan','Feb'... 之順序, 依序代入 $value 中。第 9 行顯示 $value 內容。陣列內容有 12 個元素, 所以迴圈會執行 12 次。

2) foreach (array_expression as $key => $value) 格式 foreach (陣列名稱 as $key => $value) { 迴圈敘述 ; } 第二種方式除了會將陣列元素依序存入 $value 外, 也會將陣列指標 index 同時存入 $key 中。

1: <html> 2: <title>Foreach</title> 3: <body> 4: <?php 5: $A = array (0,10,20,30,40,50,60) ; 6: foreach ($A as $key => $value){ 7: echo "\$A[$key] : " ; 8: echo "$value <br> " ; 9: } 10: ?> 11: </body> 12: </html> 第 5 行設定陣列 $A 的內容。 第 6 行將陣列 $A 中元素依序取出。陣列元素的 index 值放入 $Key, 元素的內容放到 $value 中。第 7 行顯示 $Key (即index)。第 8 行顯示 $value。

12-4 WHILE迴圈 While 指令有二個格式 do ... While 二者的差別是在於, 前者是先判斷條件判斷式是否為真才執行迴圈敘述, 而後者是先執行迴圈再判斷條件判斷式是否為真, 然後才決定是否繼續執行迴圈

While ... 格式: while (判斷式) { 迴圈敘述 }

1: <html> 2: <title>While迴圈</title> 3: <body> 4: WHILE – 開始時判斷式為真<br> 5: <?php 6: $A = 1; 7: while ($A<=10) 8: echo $A++."<br>" ; 9: ?> 10: <hr>WHILE – 開始時判斷式為假<br> 11: <?php 12: $A=20 ; 13: while ($A<=10) 14: echo $A++."<br>" ; 15: ?> 16: </body> 17: </html> 第 6 行設定 $A=1。第 7 行 while 因為 1<10 所以判斷式為真, 就會進入迴圈敘述內執行。第 8 行顯示 $A 的內容並且將 $A 的值加 1, 然後回到第 7 行在判斷是否執行 while 迴圈。如此循環一直到 $A 的值遞增到 11, 使得判斷式為假就不會再執行迴圈。此時畫面上已顯示 1 到 10。接著第 10 行顯示出一條分隔線以及提示字串。第 12 行設定 $A=20。第 13 行因為 $A 的值為 20 不會小於或等於 10, 所以判斷式為假, 迴圈敘述就不會被執行, 畫面上自然不會顯示出任何結果。這個範例執行結果可以看到當判斷式為真時, 由 1 依序顯示到 10。當判斷式為 假時就沒有顯示任何東西。

do ... while 格式: do { 迴圈敘述 }while (判斷式) ;

1: <html> 2: <title>Do_While迴圈</title> 3: <body> 4: Do-WHILE – 當判斷式為真<br> 5: <?php 6: $A = 1; 7: do { 8: echo $A++."<br>" ; 9: } while ($A<=10) ; 10: ?> 11: <hr>Do-WHILE – 當判斷式為假<br> 12: <?php 13: $A=20 ; 14: do { 15: echo $A++."<br>"; 16: }while ($A<=10) 17: ?> 18: </body> 19: </html> 第一個 do_while 迴圈第 7 行只是表示迴圈的開始並沒有判斷, 程式會直接進入第 8 行顯示 $A 的內容並且將其值加 1。第 9 行 while 判斷 $A 是否小於或等於 10。迴圈會一直執行到判斷式為假為止。第 13 行第二個迴圈 $A 的值為 20。第 14 行表示迴圈開始並沒有判斷, 進入第 15 行顯示 $A 的值 (即20) 然後加 1。第 16 行進行判斷式的檢查, 發現判斷式為假, 所以立即離開迴圈向下執行。此時畫面上已顯示一個 20。

12-5 BREAK Break指令會強迫跳離 for、while 迴圈及 switch 指令。 格式如下: break n ; brea k的用法相當簡單, 只要將break指令寫在要強迫跳離迴圈的地方就可以了。參數 n 表示跳離迴圈的深度。

1: <html> 2: <title>Break</title> 3: <body> 4: <?php 5: $A=1 ; 6: for ( ; ; ){ 7: echo $A++."<br>" ; 8: if ($A > 10) break ; 9: } 10: ?> 11: </body> 12: </html> 第 6 行 for 指令中沒有寫條件式, 在前面我們曾經說明過這樣的寫法就會形成一個無窮迴圈, 原則上這個迴圈應該不會停止。但是第 8 行 if 判斷式使得當 $A 的值大於 10 時就會執行 break 指令跳離 for 迴圈。

跳一層 跳二層 1: <html> 2: <title>Break</title> 3: <body> 4: <?php 5: echo "======= break ======= <br>\n" ; 6: for ($A=1; $A<=3; $A++) { //第一層迴圈 7: for ($B=1; $B<=10 ; $B++) { //第二層迴圈 8: echo "A = $A B=$B <br>\n" ; 9: if ($B==3) break ; 10: } 11: echo "--------------- <br>" ; 12: } 13: echo "<p>"; 14: echo "====== break 2 ====== <br>\n" ; 15: for ($A=1; $A<=3; $A++) { //第一層迴圈 16: for ($B=1; $B<=10 ; $B++) { //第二層迴圈 17: echo "A = $A B=$B <br>\n" ; 18: if ($B==3) break 2 ; 19: } 20: } 21: ?> 22: </body> 23: </html> 跳一層 跳二層

12-6 CONTINUE continue 指令會忽略 continue 以下的迴圈敘述回到迴圈起始位置繼續執行迴圈。 格式 continue n ; continue 指令會忽略所在位置以下的迴圈敘述回到迴圈起始位置繼續執行迴圈。 n 代表跳離的層數, 當 n 忽略不寫時表示 n=1。

2: <title>Continue</title> 3: <body> 4: <?php 1: <html> 2: <title>Continue</title> 3: <body> 4: <?php 5: $A=0 ; 6: while ($A < 9) { 7: $A++; 8: echo "<br>$A \n" ; 9: if (($A % 2) ==0) 10: continue ; 11: echo "<== 是奇數" ; 12: } 13: ?> 14: </body> 15: </html> 第 5 行 $A的初始值為 0。第 6 行 while 迴圈判斷 $A 是否小於 9。第 7 行 $A 的值加 1。第 8 行顯示 $A 的內容。 第 9 行如果 $A 對 2取餘數為 0 則執行 continue。第 11 行顯示文字說明字串。

問題與討論 請利用 FOR 指令在瀏覽器上顯示 0 至 20 間的奇數。 請撰寫一個程式可以顯示九九乘法表。 請用 FOREACH 改寫範例 12-3。 請利用 WHILE 指令改寫第一題。 請利用 DO-WHILE 指令改寫第二題。 請寫一個教學網頁,由使用者輸入一個數字 N,則可以顯示: a) ΣN (1至N的和) b) N! (1至N的積) c) 小於N的費式級數 (級數 : 1 1 2 3 5 8 ...) 注意,程式需判斷N不可以小於 5