1 / 27

PHP 的陣列

PHP 的陣列. PHP 陣列的基礎. 在 PHP 陣列儲存的元素是一種對應關係的兩個值 鍵值( Keys )和對應值( Values ) 例如:網域名稱對應 IP 位址;學號對應學生姓名 PHP 陣列依鍵值的不同,可以分為 索引陣列 結合陣列. 索引陣列( Indexed Arrays ). PHP 的索引陣列( Indexed Arrays ) 鍵值:從 0 開始依序增加的正整數,稱為「索引」( Index ) 索引陣列是將相同資料型態的變數集合起來,使用一個名稱代表,以索引值存取變數值. 建立索引陣列 ( 方法 1). PHP 陣列並不需要事先宣告

jereni
Download Presentation

PHP 的陣列

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PHP的陣列

  2. PHP陣列的基礎 • 在PHP陣列儲存的元素是一種對應關係的兩個值 • 鍵值(Keys)和對應值(Values) • 例如:網域名稱對應IP位址;學號對應學生姓名 • PHP陣列依鍵值的不同,可以分為 • 索引陣列 • 結合陣列

  3. 索引陣列(Indexed Arrays) • PHP的索引陣列(Indexed Arrays) • 鍵值:從0開始依序增加的正整數,稱為「索引」(Index) • 索引陣列是將相同資料型態的變數集合起來,使用一個名稱代表,以索引值存取變數值

  4. 建立索引陣列(方法1) • PHP陣列並不需要事先宣告 • 使用兩種方式來建立陣列 • 直接指定陣列元素的值,如下所示: • $names[] = "江小魚"; • $names[] = "陳允傑"; • $names[] = "楊過";

  5. 建立索引陣列(方法2) • 使用array()語言建構子建立陣列 $grades = array(78, 55, 69, 93); • 使用array()以「,」逗號分隔指定陣列元素值,以此例的陣列共有4個陣列元素,如下圖所示:

  6. 存取與走訪陣列元素 • 使用索引值存取陣列元素,索引值從0開始 • $grades[2] = 65; • $total += $grades[$i]; • 走訪整個陣列 • 使用for迴圈逐次增加索引來,就可以顯示陣列中的每一個元素 for ( $i = 0; $i < count($grades); $i++ ) echo "$i=>$grades[$i] "; • count($grades):陣列$grades的個數

  7. foreach迴圈走訪陣列 • 提供foreach迴圈來走訪陣列的每一個元素 foreach ($scores as $element) { echo "$element "; $total += $element; } • 在as關鍵字前 • 走訪的陣列變數 • 在as關鍵字之後 • 取得陣列元素值的變數 • 依序取出陣列元素,指定給變數$element

  8. 練習一 • 利用二個一維的索引陣列,分別儲存星期一到星期日的中英文名詞,再利用迴圈印出如下星期的中英對照。

  9. 結合陣列 • 「結合陣列」(Associative Arrays) • 陣列元素儲存的是對應的鍵值和值 • 鍵值不可重複;值可重複 • 結合陣列各元素的鍵值可以是字串或正整數 • 可以使用鍵值來存取陣列元素 • 結合陣列儲存的是一種擁有對應關係的成對元素 • 可以使用正整數或字串作為鍵值,從鍵值對應到儲存的元素值

  10. 索引陣列 vs. 結合陣列 • 索引陣列 • $cars=array("Saab","Volvo","BMW","Toyota"); • 結合陣列 • $ages=array(“Joey"=>32, “Ross"=>30, "Chandler"=>34); [0] [1] [2] [3] “Saab” “Volvo” “BMW” “Toyota” $cars [“Joey”] [“Ross”] [“Chandler”] 32 30 34 $ages

  11. 建立結合陣列(方法1) • 結合陣列也不需事先宣告,同樣有兩種方式來建立結合陣列 • 直接指定陣列變數值 • $arr["color"] = "紅色"; • $arr["name"] = "江小魚"; • $arr["shape"] = "圓形"; • $arr[] = 50; • 方括號的索引是字串的鍵值 • 最後一個沒有指定索引值,PHP自動指定從0開始的正整數(如同索引陣列)

  12. 建立結合陣列(方法2) • 使用array()建立陣列 • $arr = array( "color"=>"黑色", "name"=> "陳會安", "shape"=>"三角形", 100, 50 ); • 使用array()指定陣列元素的值,元素是使用「,」逗號分隔 • 各元素在「=>」符號前是鍵值;之後是對應值,最後一個沒有指定鍵值,預設是0

  13. 新增和刪除結合陣列元素 • 使用指定敘述指定新元素 • 在新增前請先使用isset()檢查鍵值是否已經重複 if (!isset($arr["type"])) $arr["type"] = "PHP"; • if條件使用isset()檢查"type"鍵值的陣列元素是否存在 • 如果不存在,才使用指定敘述新增元素 • 刪除結合陣列元素是使用unset(), • unset($arr["type"]);

  14. 走訪結合陣列元素 • 結合陣列一樣可以使用foreach迴圈走訪陣列元素 • foreach($arr as $key=>$value) echo "$key=>$value "; • foreach迴圈括號在as關鍵字前是走訪陣列 • 之後使用「=>」符號取得各元素的鍵值$key和值$value

  15. 練習二 • 將下面的成績單利用結合陣列儲存,以名字做鍵值,再將成績單輸出。

  16. 建立二維索引陣列 • 「二維陣列」(Two-dimensional Arrays) • 擁有2個索引的陣列,屬於一種一維陣列的擴充 • 如果將一維陣列想像成一度空間的線;二維陣列就是二度空間的平面。 • PHP陣列的元素可以是其他陣列 • PHP一樣支援二維陣列或多維陣列

  17. 建立二維索引陣列 • 在建立二維陣列前,首先建立每一列的一維陣列,接著建立二維陣列,如下所示: $row0 = array(64, 65); $row1 = array(77, 81); $row2 = array(89, 93); $grades = array($row0, $row1, $row2);

  18. 存取二維陣列的元素 • 在建立二維陣列後,就可以使用2個索引來存取陣列元素值 • $grades[1][0] = 77; • 取得元素值也是使用2個索引 • $sum += $grades[$j][$i]; • 需要使用二層for迴圈來走訪陣列元素

  19. 練習三 • 將成績單儲存在一個二維陣列中,將如下三筆成績的成績表列印出來。

  20. 陣列運算子與陣列參數 • 陣列變數支援指定敘述 • 直接將陣列變數指定成其他陣列變數 • $c = $b + $a; • 將陣列運算式指定給陣列變數$c • 「+」符號是PHP陣列運算子,可以執行兩個陣列變數的聯集運算 $a = array(“A”, “B”, “C”, “D”); $b = array(“B”, “C”, “E”); $c = $b + $a; Print_r($c) //列印出所有陣列索引與元素  Array ( [0] => B [1] => C [2] => E [3] =>D )

  21. PHP的陣列運算子 • PHP提供陣列運算子執行聯集和陣列是否相等的比較運算,其說明如下表所示:

  22. 索引陣列相關函數 • array_pad(array, int, value) • $B = array("A","B"); • print_r(array_pad($B, 4, 0)); • Array ( [0] => A [1] => B [2] => 0 [3] => 0 ) • $B = array("A","B"); • print_r(array_pad($B, -4, 0)); • Array ( [0] => 0 [1] => 0 [2] => A [3] => B ) • list(var1, var2, …) • $C = array(“A”,"B“, “C”); • list($x, $y, $z) = $C; •  $x = “A”, $y = “B”, $z = “C”

  23. 陣列排序與搜尋函數 • 索引陣列排序 • sort(array) • $D = array(“F”, “D”, “E”, “G”, “B”); • sort($D) • print_r($D); • Array ( [0] => B [1] => D [2] => E [3] => F [4] => G) • rsort(array)  與sort()相反

  24. 陣列排序與搜尋函數 • 結合陣列排序 • asort(array) $ages=array(“Joey"=>32, “Ross"=>30, "Chandler"=>34); asort($ages); print_r($ages); • Array ( [Ross] => 30 [Joey] => 32 [Chandler] => 34 ) • arsort(array)  與asort()相反

  25. 陣列排序與搜尋函數 • 陣列共同排序 • array_multisort(arr1, arr2) • $name = array(“Joey", “Ross", "Chandler");$ages=array(32, 30, 34);array_multisort($ages, $name);print_r($name); • Array ( [0] => Ross [1] => Joey [2] =>Chandler)

  26. 陣列排序與搜尋函數 • 陣列搜尋函數 • in_array(value, array):檢查value是否在array中,傳回ture或false • $arr = array(“F”, “D”, “E”, “G”, “B”); • in_array(“E”, $arr);  ture • array_search(value, array):檢查value是否在array中,傳回鍵值 • $ages=array(“Joey"=>32, “Ross"=>30, "Chandler"=>34); • array_search(30, $ages);  Ross

  27. 練習四 • 根據三個科目的總分輸出排名次的成績單

More Related