陣列裡的陣列:好用的二維陣列!

<?php
  // 宣告$School是二維陣列
  $School = array(
    array("幼稚園", "八個月至六歲", "小天使"),
    array("國小", "七歲至十三歲", "已經很皮了"),
    array("國中", "十四歲至十六歲", "管不動了"));

  // 印出$School陣列的某個元素
  echo $School[0][0]; echo " ";
  echo $School[0][1]; echo " ";
  echo $School[0][2]; echo "<br>";
  echo $School[1][0]; echo " ";
  echo $School[1][1]; echo " ";
  echo $School[1][2]; echo "<br>";
  echo $School[2][0]; echo " ";
  echo $School[2][1]; echo " ";
  echo $School[2][2]; echo "<br>";
  echo "<br>";

  // 逐一印出$School陣列的全部元素
  for($Key=0;$Key<count($School);$Key++) {
    for($Key2=0;$Key2<count($School[$Key]);$Key2++) {
      echo $School[$Key][$Key2];
      echo " ";
    }
    echo "<br>";
  }
  echo "<hr>";


  // 二維陣列:指定索引名稱
  $City = array(
    "800"=>array("新興區", "市中心"),
    "803"=>array("三民區", "面積最大"),
    "807"=>array("小港區", "原屬高雄縣"));

  echo $City["800"][0]; echo " ";
  echo $City["800"][1]; echo "<br>";
  echo $City["803"][0]; echo " ";
  echo $City["803"][1]; echo "<br>";
  echo $City["807"][0]; echo " ";
  echo $City["807"][1]; echo "<br>";
  echo "<br>";

  while (list($Key, $Value) = each($City)) {
    while (list($Key2, $Value2) = each($City[$Key])) { // 註
      echo $City[$Key][$Key2]; // 註2
      echo " ";
    }
    echo "<br>";
  }
?>
結果:
幼稚園 八個月至六歲 小天使
國小 七歲至十三歲 已經很皮了
國中 十四歲至十六歲 管不動了

幼稚園 八個月至六歲 小天使
國小 七歲至十三歲 已經很皮了
國中 十四歲至十六歲 管不動了

新興區 市中心
三民區 面積最大
小港區 原屬高雄縣

新興區 市中心
三民區 面積最大
小港區 原屬高雄縣
語法:
一般二維陣列型式:
$變數名稱 = array(array("元素值", "元素值"), array("元素值", "元素值"));

這樣寫法比較清楚:
$變數名稱 = array(
  array("元素值", "元素值"),
  array("元素值", "元素值"));

指定索引名稱型式:
$變數名稱 = array("索引"=>array("元素值"), "索引"=>array("元素值"), "索引"=>array("元素值"));

這樣寫法比較清楚:
$變數名稱 = array(
  "索引"=>array("元素值"),
  "索引"=>array("元素值"),
  "索引"=>array("元素值"));
說明:
  1. 一維陣列的說明請參閱前範例。
  2. 二維陣列的「元素值」型態可以是字串或數字,也可以放入變數或常數或一維陣列。
  3. 每個元素之間必須用逗點(,)隔開。
  4. 用中括號([])取得陣列的一維元素值;用兩對中括號([][])取得陣列的二維元素值。
  5. 陣列的「索引值」是從零(0)開始計數,一維第一個元素就是$Array[0];二維第一個元素就是$Array[索引值][0]
  6. 自定「索引名稱」可以是字串或數字,也可以放入變數及常數;用自定索引時要加等於大於(=>)。
  7. while (list($Key, $Value) = each($Array)),這種寫法就是逐一取得陣列的「索引值$Key」及「元素值$Value」;不必去考慮陣列元素的個數,也不必考慮索引名稱,是很好用的方式。用兩層這樣的方式,就是逐一取得二維陣列的「索引值」及「元素值」。
  8. 註:範例中的$City[$Key]可寫成$Value,結果是一樣的,不過第一種寫法比較容易除錯。
  9. 註2:範例中的$City[$Key][$Key2]也可以寫成$Value2$Value[$Key2],結果是一樣的,不過第一種寫法比較容易除錯。
  10. 二維陣列只是一維陣列多一層,規則與一維陣列均同。
  11. 雙斜線(//)是註解。

作者:Dana, cowwu@ms15.hinet.net, 2001/01/04
本文章公開於個人網站 http://www.dana.idv.tw
Home Copyright © Shu-Chen Wu