資訊管理學系 - web.nuu.edu.twweb.nuu.edu.tw/~ychwang/962PHP/Ch013-Hwang.pdf · 在php...

29
資訊管理學系 授課教師:黃元巨博士

Transcript of 資訊管理學系 - web.nuu.edu.twweb.nuu.edu.tw/~ychwang/962PHP/Ch013-Hwang.pdf · 在php...

  • 資訊管理學系

    授課教師:黃元巨博士

  • 第 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;

    讀者可以發現在存入 30 及 40 時並沒有指定陣列的指標, 這並不會造成錯誤。因為在 PHP 程式設計中如果程式中未指定指標則存入的數值會依序儲存資料至陣列尾端。

  • 1: 2: 一維陣列3: 4: 15: 16:

    直接指定立即值範例

  • 函數設定格式如下:陣列名稱 = array(第0元素, 第1元素, 第2元素, ...)陣列名稱 = array(0 =>第0元素, 1 =>第1元素, ...)

    第一種會將元素依序指定給陣列, 並且由指標 0 開始存入。

    第二種則是指標加上 =>接著元素內容。

  • 1: 2: 一維陣列3: 4: 16: 17:

    將第 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: 2: 多維陣列3: 4: 29: 30:

  • PHP 也接受文字當成指標1:

  • 13‐3陣列的操作存取陣列

    指標運用

  • 1: 2: 統計表3: 4: 17: 18:

    Count函數

    格式:int count()

    說明:count()函數會傳回由 [陣列名稱] 所指定的陣列元素的個數。

  • 1: 6: 7: 二維陣列8: 9: 10: 18: 19: 20:

    array_sum() 函數格式如下:

    mixed array_sum ( array 陣列名稱)

    說明:函數將傳回[陣列名稱]所指定的陣列中全部的元素相加之值。回傳值可能是整數或浮點數。

  • 1:

    第 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:

  • 18: echo "原陣列順序:
    ";19: show_array($k);20: array_multisort($k);21: echo "排序後順序:
    ";22: show_array($k); 23: array_multisort($k,SORT_DESC);24: echo "DESC排序後順序:
    ";25: show_array($k); 26: array_multisort($p,$k);27: echo "同時排序:
    ";28: show_array($p);29: show_array($k);30: ?>

    排序範例 2/2

    $k=array('this', 'is', 'a', 'book','that','pen');

  • 1:

    第 2 行宣告陣列的內容。第 3 行利用 array_search() 傳回 'book' 在陣列中第一次出現的位置。第 4 行顯示搜尋結果。第 5 行利用 array_keys() 函數搜尋整個陣列是否有 'is' 字串, 並且將搜尋到 'is' 在陣列中的位置依序存放在$p 陣列。第 6-7 行顯示$p 的搜尋結果。第 8 行利用 count()函數計算陣列的元素個數。

    修改第 7 行

  • 問題與討論1. 請繪圖說明一維陣列, 二維陣列和三維陣列的組成及

    指標位置。

    2. 請修改範例 13‐6 計算每一個列及每一個行的和。3. 如果每一件零件的安全存量是 500 個。請修改範例

    13‐7 顯示一個進貨單, 顯示每一個零件需要進貨的數量。

    4. 承上題, 請寫一網頁可選擇 (radio) 進貨數量的排序結果, 順序由大到小或由小到大。

  • 問題與討論5. 請利用範例 13‐5 的數據, 完成下圖之要求。 (提

    示  )

    資料庫程式設計PHP5與MySQL5� 入門學習指南-Chapter13本章大綱13-1 定義陣列變數與陣列一維陣列的表示方式投影片編號 7多維陣列二維陣列二維陣列的結構三維陣列13-2 陣列設定直接指定立即值投影片編號 14函數設定投影片編號 16二維陣列的設定投影片編號 18投影片編號 1913-3陣列的操作投影片編號 21投影片編號 22投影片編號 2313-4 排序與搜尋投影片編號 25投影片編號 26投影片編號 27問題與討論問題與討論