PHP5與MySQL5 入門學習指南 凱文瑞克 著 第 13 章 陣列應用.

Slides:



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

Web 开发基础 第二章 表格与页面布局. 回顾 Internet 和 万维网 网页的工作原理 网页的基本结构 标记及其属性 段落标记,图片标记,超级链接标记 相对路径,绝对路径,物理路径.
HyperText Markup Language
白玉苦瓜 余光中.
2011年10月31日是一个令人警醒的日子,世界在10月31日迎来第70亿人口。当日凌晨,成为象征性的全球第70亿名成员之一的婴儿在菲律宾降生。 ?
HTML第一课 李 伟 HTML开发语言基础.
Unit 5 What day is it today?
第5章 HTML 標籤介紹.
初级会计实务 第八章 产品成本核算 主讲人:杨菠.
佛山科学技术学院 第7章 HTML Internet及多媒体应用.
第8讲 HTML与PHP基础 静态网页 vs. 动态网页.
第7章 表 格 清华大学出版社.
第三讲 站点链接与表格布局.
中考阅读 复习备考交流 西安铁一中分校 向连吾.
——奧科特公開及內部培訓 系列課程(三)之十一
Web图片搜索引擎设计 ——基于文本的图片信息提取.
DREAMWEVAER MX 2004入门 楼斌 BBS ID:lou 生命科学学院
网页 设计与制作.
中央广播电视大学开放教育 成本会计(补修)期末复习
人教版义务教育课程标准实验教科书 小学数学四年级上册第七单元《数学广角》 合理安排时间 248.
模块1 网页设计基础 实训1 体验HTML文档 1.1 网页基础知识 1.2 网站配色方案 1.3 网站设计常用软件
第二部分 HTML语言控制 本次课的主要内容: 1、认识网页文件的结构 2、HEAD、TITLE、BODY等基本标记符的使用
HTML 語法教學 授課:彭穎聰 老師.
中考语文积累 永宁县教研室 步正军 2015.9.
经 络 学.
小学数学知识讲座 应用题.
趙靖宇時間-專治你的Monday blue
倒装句之其他句式.
Mike Wu Morrison Taiwan Sep 15th, 2011
PHP+MySQL互動式網頁程式設計班 PHP進階語法 講師:林業峻 CSIE, NTU 6/ 19, 2010.
湖北职院计科系.
第 22 课 孙中山的民主追求 1 .近代变法救国主张的失败教训: “师夷之长技以制 夷”“中体西用”、兴办洋务、变法维新等的失败,使孙中山
PHP5與MySQL5 入門學習指南 凱文瑞克 著 第 9 章 常數.
計算機概論 請老師填入姓名主講 課本:數位傳真2012 博碩文化出版發行.
留言版 1.先Create一個留言板的table
PHP +MySQL快速入門 Lesson 4.
行政院研究發展考核委員會 【網頁無障礙設計】說明會
PHP 5 入門基礎 第一個PHP 程式 PHP 資料型態.
第5章 PHP数组.
網路概念 APACHE PHP MYSQL HTML BY 董仔 08/01/14.
PHP 5 陣列與自定函數 陣列應用 自定函數.
Ch03 HTML5 + CSS 表格與多媒體 網頁程式設計.
PHP5與MySQL5 入門學習指南 凱文瑞克 著 第 18 章 Cookie和 Session.
條件判斷指令 -if 指令 -switch 指令 迴圈指令 - for 迴圈 - while迴圈 - break、continue 指令
PHP 程式流程控制結構.
PHP5與MySQL5 入門學習指南 凱文瑞克 著 第 17 章 物件.
网 站 设 计 与 建 设 Website design and developments
PHP 變數、常數與運算子 變數 常數 運算子
Web应用开发.
武汉纺织大学传媒学院 cm.wtu.edu.cn
PHP5與MySQL4 入門學習指南 凱文瑞克 著 第 16 章 檔案處理.
2012年十月二十九号 Do Now Write the following in pinyin: 1) 今天是七月十九号吗
W3C标准网页制作 主讲教师:张 涛.
程式語言與邏輯 高慧君 台北市立南港高中 2006年12月22日.
My favorit subject is science .
Today is Monday 高年級晨間美語.
第六章 迴圈與陣列.
網站(web) 授課:方順展.
XML備份MySQL資料庫 <html> <head>
第八节 算术运算符和算术表达式.
PHP程式設計 五、程式流程控制結構 建國科技大學 資訊管理學系 饒瑞佶.
表格 (Table).
網頁設計實務- PHP 與資料庫整合.
分頁.
PHP5與MySQL5 入門學習指南 凱文瑞克 著 第 12 章 迴圈指令.
畢氏定理(百牛大祭)的故事 張美玲 製作 資料來源:探索數學的故事(凡異出版社).
Unit 2 My Week A Let’s learn 绿色圃中小学教育网
第1章 HTML基础 主讲人:刘泰然 经济管理学院.
教师:李金双 网页制作 教师:李金双
102年人事預算編列說明 邁向頂尖大學辦公室製作.
Presentation transcript:

PHP5與MySQL5 入門學習指南 凱文瑞克 著 第 13 章 陣列應用

本章大綱 13-1 定義陣列 13-2 陣列設定 13-3陣列的操作 13-4 排序與搜尋 問題與討論

13-1 定義陣列 所謂的陣列就是指集合相同屬性的變數所成的集合 不同的維度分成了一維陣列, 二維陣列 ... 依此類推

變數與陣列

一維陣列的表示方式 $陣列名稱[指標] 例: 陣列的名稱為 $CAR, 指標依序由 0 開始逐一遞增。 這種形式 (像一列火車的結構) 的陣列我們便稱為一維陣列。

在 PHP 中因為變數型態不需要特別宣告, 因此當資料存入變數時, 變數存放的格式為陣列格式, 此時變數即可成為陣列型態。舉例如下: $Name[0] = "Joe" ; $Name[1] = "Ken" ; $Name[2] = "Cherry" ; $Name[3] = "Maggy"; 這時候建立了一個一維陣列

多維陣列 陣列中只有一個指標的陣列稱為一維陣列, 如果陣列的指標超過一個以上稱之為多維陣列 有兩個指標則稱之為二維陣列, 三個指標稱之為三維陣列其餘依此類推 例 $陣列名稱[指標1] [指標2] = 值 //二維陣列 $陣列名稱[指標1] [指標2] [指標3] = 值 //三維陣列 $陣列名稱[指標1] [指標2] [指標3] [指標4] = 值 //四維陣列

二維陣列

二維陣列的結構

三維陣列 所謂的三維陣列就是有三個指標的陣列 如圖 所示, 將 k 個二維陣列排在一起就變成三維陣列。 二維陣列 三維陣列

13-2 陣列設定 設定陣列的初始值的方式有二種 直接指定立即值 函數設定

直接指定立即值 例: $A[0]=10; $A[1]=20; $A[]=30; $A[]=40; 格式如下: $陣列名稱 [ 指標 ] = 值 例: $A[0]=10; $A[1]=20; $A[]=30; $A[]=40; 讀者可以發現在存入 30 及 40 時並沒有指定陣列的指標, 這並不會造成錯誤。因為在 PHP 程式設計中如果程式中未指定指標則存入的數值會依序儲存資料至陣列尾端。

直接指定立即值範例 1: <html> 2: <title>一維陣列</title> 3: <body> 4: <?php 5: $A[0] = "Sunday" ; 6: $A[1] = "Monday" ; 7: $A[2] = "Tuesday" ; 8: $A[3] = "Wednesday" ; 9: $A[4] = "Thursday" ; 10: $A[] = "Friday" ; 11: $A[] = "Saturday" ; 12: for ($B=0; $B<=6; $B++) 13: echo "$A[$B] <br>" ; 14: ?> 15: </body> 16: </html> 直接指定立即值範例

函數設定 格式如下: 陣列名稱 = array(第0元素, 第1元素, 第2元素, ...) 陣列名稱 = array(0 =>第0元素, 1 =>第1元素, ...) 第一種會將元素依序指定給陣列, 並且由指標 0 開始存入。 第二種則是指標加上 =>接著元素內容。

2: <title>一維陣列</title> 3: <body> 4: <?php 1: <html> 2: <title>一維陣列</title> 3: <body> 4: <?php 5: $A = array( 6: 0 => "Sunday", 7: 1 => "Monday", 8: 2 => "Tuesday", 9: 3 => "Wednesday", 10: 4 => "Thursday", 11: 5 => "Friday", 12: 6 => "Saturday" ); 13: for ($B=0; $B<=6; $B++) 14: echo "$B : $A[$B] <br>" ; 15: ?> 16: </body> 17: </html> 將第 6-12 行的指標編號及 => 運算子刪除, 改成 $A = array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ); 執行的結果還是相同。

二維陣列的設定 格式如下: $陣列名稱 = array( 0 => array( 0 => 第0列第0行的值 1 => 第0列第1行的值 2 => 第0列第2行的值 ) , 1 => array( 0 => 第1列第0行的值, 1 => 第1列第1行的值, 2 => 第1列第2行的值 ), 以此類推 ... ) ; 在二維陣列設定時, 先設定列, 在每一列中再設定元素的值。

1: <html> 2: <title>多維陣列</title> 3: <body> 4: <?php 5: $A = array( 6: 0 => array( //設定第0列 7: 0 => "00" , 8: 1 => "01" , 9: 2 => "02" 10: ) , 11: 1 => array( //設定第1列 12: 0 => "10", 13: 1 => "11", 14: 2 => "12" 15: ), 16: 2 => array( //設定第2列 17: 0 => "20", 18: 1 => "21", 19: 2 => "22" 20: ) 21: ) ; 22: echo "顯示陣列內容<br>"; 23: for ($B=0; $B<=2; $B++){ 24: for ($c=0; $c<=2; $c++) 25: echo $A[$B][$c].", " ; 26: echo "<br>" ; 27: } 28: ?> 29: </body> 30: </html>

PHP 也接受文字當成指標 1: <?php 2: $A=array( "Mon" => "星期一", 3: "Tue" => "星期二", 4: "Wed" => "星期三"); 5: foreach ($A as $k => $v) 6: echo "A[ $k ] = $v <br>"; 7: ?> PHP 也接受文字當成指標

13-3陣列的操作 存取陣列 指標運用

1: <html> 2: <title>統計表</title> 3: <body> 4: <?php 5: $s = array (0,15,10,20,17,3,8,10,15,12) ; 6: echo "銷售員業績統計表<p>" ; 7: $cnt=count($s); 8: for ($A=1 ; $A<$cnt; $A++){ 9: echo "編號 $A 銷售員 : " ; 10: $s[0]+=$s[$A] ; 11: $p=$s[$A]*20; 12: echo "<img src=line.jpg width=$p height=10>"; 13: echo " $s[$A]<br>" ; 14: } 15: echo "<p>總量: $s[0]" ; 16: ?> 17: </body> 18: </html> Count函數 格式: int count() 說明: count()函數會傳回由 [陣列名稱] 所指定的陣列元素的個數。

1: <?php 2: $s=array( array(62,22,35,58,90), 3: array(73,6,94,12,15), 4: array(25,17,75,20,25)); 5: ?> 6: <html> 7: <title>二維陣列</title> 8: <body> 9: <table border=1 width=300 > 10: <?php 11: for ($i=0; $i<=2; $i++){ 12: echo "<tr align=center>"; 13: foreach($s[$i] as $v) 14: echo "<td> $v </td>"; 15: echo "<td bgcolor=#ffffd2>".array_sum($s[$i])."</td>"; 16: } 17: ?> 18: </table> 19: </body> 20: </html> array_sum() 函數格式如下: mixed array_sum ( array 陣列名稱) 說明: 函數將傳回[陣列名稱]所指定的陣列中全部的元素相加之值。 回傳值可能是整數或浮點數。

1: <?php 2: $tableA=array('I01'=> 21, 'I03'=> 32, 'I06'=> 16); 3: $tableB=array('I01'=> 31, 'I02'=> 16, 'I06'=> 22); 4: foreach($tableA as $k => $v){ 5: if (isset($tableB[$k])){ 6: $tableA[$k]=$tableB[$k]+$v; 7: unset($tableB[$k]); 8: } 9: } 10: foreach($tableB as $k => $v) 11: if (isset($tableB[$k])) 12: $tableA[$k]=$tableB[$k]; 13: echo "編號 數量<br>"; 14: foreach($tableA as $k => $v) 15: echo "[ $k ] : ".$tableA[$k]."<br>"; 16: ?> 第 2-3 行宣告二的零件表. 請注意二張零件表以零件編號為指標存放零件的數量。 第 4-9 行將 $tableA 的元素依序取出。 第 5 行尋找 $tableB 中是否有相同編號的零件。 如果有則第 6 行將二個數量加起來放到 $tableA中。 計算後第 7 行取消 $tableB 中該零件的內容。 第 10-12 行依序取出 $tableB 中的元素。 第 11 行如果讀取的項目未被取消, 則第 12 行將該項目加入 $tableA 中。

13-4 排序與搜尋 排序:依規則重新排列 排序函數有 sort(),arsort(), asort(), ksort(), natsort(), natcasesort(), rsort(), usort(), array_multisort(), 和 uksort() 各式排序函數。 詳細內容請參考附錄會有更多說明。 搜尋, 就是設定一個數值, 然後在一群元素中尋找是否有元素與欲搜尋的數值相同。

排序範例 1/2 11-13行 14-17行 1: <?php 2: function show_array($a){ 3: foreach ($a as $v) 4: echo "[$v] "; 5: echo "<p>"; 6: } 7: $p=array(1,3,5,2,4,6); 8: $k=array('this', 'is', 'a', 'book','that','pen'); 9: echo "原陣列順序:<br>"; 10: show_array($p); 11: sort($p); 12: echo "sort()排序後順序:<br>"; 13: show_array($p); 14: rsort($p); 15: echo "rsort()排序後順序:<br>"; 16: show_array($p); 17: echo "<hr width=300 align=left>"; 排序範例 1/2 11-13行 14-17行

排序範例 2/2 $k=array('this', 'is', 'a', 'book','that','pen'); 18: echo "原陣列順序:<br>"; 19: show_array($k); 20: array_multisort($k); 21: echo "排序後順序:<br>"; 22: show_array($k); 23: array_multisort($k,SORT_DESC); 24: echo "DESC排序後順序:<br>"; 25: show_array($k); 26: array_multisort($p,$k); 27: echo "同時排序:<br>"; 28: show_array($p); 29: show_array($k); 30: ?> 排序範例 2/2

2: $a=array('this', 'is', 'a', 'book','that','is', 'a','pen'); 1: <?php 2: $a=array('this', 'is', 'a', 'book','that','is', 'a','pen'); 3: $pos=array_search('book',$a); 4: echo "$a[$pos]的位置在陣列中第 $pos 位<p>"; 5: $p=array_keys($a,'is'); 6: foreach ($p as $k => $v) 7: echo "第[$k]個 is 出現在陣列第 $v 個位置<br>"; 8: echo "總共有 ".count($p)." 個 is 在陣列中 <br>"; 9: ?> 第 2 行宣告陣列的內容。 第 3 行利用 array_search() 傳回 'book' 在陣列中第一次出現的位置。 第 4 行顯示搜尋結果。 第 5 行利用 array_keys() 函數搜尋整個陣列是否有 'is' 字串, 並且將搜尋到 'is' 在陣列中的位置依序存放在 $p 陣列。 第 6-7 行顯示 $p 的搜尋結果。第 8 行利用 count()函數計算陣列的元素個數。 修改第 7 行

問題與討論 請繪圖說明一維陣列, 二維陣列和三維陣列的組成及指標位置。 請修改範例 13-6 計算每一個列及每一個行的和。 如果每一件零件的安全存量是 500 個。請修改範例 13-7 顯示一個進貨單, 顯示每一個零件需要進貨的數量。 承上題, 請寫一網頁可選擇 (radio) 進貨數量的排序結果, 順序由大到小或由小到大。

問題與討論 請利用範例 13-5 的數據, 完成下圖之要求。 (提示 <table> )