Board logo

標題: 4-2 多維陣列(4-2-1 二維陣列的宣告) [打印本頁]

作者: 小誌    時間: 2011-4-18 19:46     標題: 4-2 多維陣列(4-2-1 二維陣列的宣告)

4-2   多維陣列多維陣列(Multi-dimensional),陣列中還有陣列就稱之多維陣列,我們之前所說明的是一維陣列,因為我們只指定了一個陣列個數索引,如果我們指定了兩個陣列個數索引,那這個陣列就成為二維陣列,若如果我們指定了三個陣列個數索引,那這個陣列就成為三維陣列,以此類推。
作者: 小誌    時間: 2011-4-18 19:48

4-2-1   二維陣列的宣告
一維陣列是只有一行的資料排列,而二維陣列的資料排列就如同表格一般,分為「行」與「列」:
[attach]5488[/attach]
圖4-7  二維陣列的「行」與「列」。
所以,我們要使用二維陣列時,就要如下列方式來初始:
標準陣列初始格式
  1. $陣列名稱[X][Y]=初始值;
複製代碼
上式中:「X」為「列」的大小;「Y」為「行」的大小。
例如: 初始一個3x2的二維陣列
  1. $Myarray[0][0]="小誌";
  2. $Myarray[0][1]="egge";
  3. $Myarray[1][0]="chiey";
  4. $Myarray[1][1]="connie";
  5. $Myarray[2][0]="小魚";
  6. $Myarray[2][1]="小和";
複製代碼
注意喔!宣告一個3x2的二維陣列,其列的最大註標應該為2行的最大註標應該是1才對喔!其中列元素是0~2共三個,行元素則是0~1共兩個:

[attach]5489[/attach]
圖4-8   3x2的二維陣列。
作者: 小誌    時間: 2011-4-18 19:50

假設我們有一個學生成積表格如下圖,請以二維陣列方式儲存表格內資料:
[attach]5490[/attach]
圖4-9   學生成績表。

要將表格資料轉換成陣列形式,我們可以這樣做:
  1. $Student[0][0]=”姓名”; //‘將第一列第一行的資料指定為”姓名”
  2. $Student[0][1]=”國文”; //將第一列第二行的資料指定為”國文”
  3. 以下略…
複製代碼
就是以逐個元素資料填入的方式,茲將元素註標對照如下圖;
[attach]5491[/attach]
圖4-10   行列註標對照。
作者: 小誌    時間: 2011-4-18 19:50

array()函數亦可應用於二維陣列的初始,做法是:將「列」視為一維陣列,而此一「列」陣列的元素則為「行」陣列,以圖4-9學生成績表來說:(ex04_11.php)
  1. $Student=array(
  2. "0"=>array(0=>"姓名",1=>"國文",2=>"英文",3=>"數學"),
  3. "1"=>array(0=>"小誌",1=>100,2=>90,3=>80),
  4. "2"=>array(0=>"得華",1=>60,2=>100,3=>70),
  5. "3"=>array(0=>"亭封",1=>90,2=>80,3=>90),
  6. "4"=>array(0=>"學有",1=>65,2=>90,3=>80));
複製代碼
當然,對於非連續註標的二維陣列或是字串註標陣列,使用array()函數也是行的通的,例如:(ex04_12.php)
  1. <?
  2. $Student=array(
  3. "小誌"=>array("a"=>100,2=>90,"b"=>80),
  4. "得華"=>array(1=>60,"c"=>100,3=>70),
  5. "亭封"=>array("d"=>90,2=>80,"e"=>90));
  6. ?>
複製代碼
上例等同:
  1. $Student["小誌"]["a"]=100;
  2. $Student["小誌"][2]=90;
  3. $Student["小誌"]["b"]=80;

  4. $Student["得華"][1]=60;
  5. $Student["得華"]["c"]=100;
  6. $Student["得華"][3]=70;

  7. $Student["亭封"]["d"]=90;
  8. $Student["亭封"][2]=80;
  9. $Student["亭封"]["e"]=90;
複製代碼

作者: bubaby0608    時間: 2013-3-24 03:07


行(直的)
列(橫的)




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)