Board logo

標題: 4-2-2 二維陣列的存取 [打印本頁]

作者: 小誌    時間: 2011-4-18 19:52     標題: 4-2-2 二維陣列的存取

4-2-2   二維陣列的存取
要存取二維陣列元素的資料很簡單,就如同處理一維陣列,不過,我們必須同時指定元素的列註標與行註標,例如:
  1. $Myarray [0][1] = 999;  //將資料存放置陣列位置[0][1]中
  2. $Myarray[1][2] = 888;  //將資料存放置陣列位置[1][2]中
  3. //取出陣列位置[0][1]與[1][2]的資料相減,並存至陣列位置[3][3]中
  4. $Myarray[3][3]= $Myarray[0][1]- $Myarray[1][2];
複製代碼
如果要以迴圈敘述來存取二維陣列的資料,則必須使用巢狀的迴圈,我們以for巢狀迴圈輸出範例ex04_13.php(圖4-11)二維陣列內的資料來說明:
[attach]5492[/attach]
圖4-11   ex04_13.php。
ex04_13.php
  1. <HTML>
  2. <HEAD>
  3. <TITLE>ex04_13</TITLE>
  4. </HEAD>
  5. <BODY>
  6. <?
  7. $Student=array(
  8. "0"=>array(0=>"姓名",1=>"國文",2=>"英文",3=>"數學"),
  9. "1"=>array(0=>"小誌",1=>100,2=>90,3=>80),
  10. "2"=>array(0=>"得華",1=>60,2=>100,3=>70),
  11. "3"=>array(0=>"亭封",1=>90,2=>80,3=>90),
  12. "4"=>array(0=>"學有",1=>65,2=>90,3=>80));
  13. ?>
  14. <table border=1>
  15. <?
  16. $i=count($Student);
  17. for($x=0;$x<$i;$x++)
  18. {
  19.   echo "<tr>";
  20.   $j=count($Student[$x]);
  21.   for ($y=0;$y<$j;$y++)
  22.    {
  23.    echo ("<td>" . $Student[$x][$y] . "</td>");
  24.    }
  25.   echo "</tr>";
  26. }
  27. ?>
  28. </table>
  29. </BODY></HTML>
複製代碼

作者: 小誌    時間: 2011-4-18 19:53

對於連續註標的二維陣列使用巢狀for迴圈可以輕易的解決,但是若對於非連續註標或字串註標的陣列就行不通了,此時要改用巢狀的foreach迴圈才能解決,例如輸出範例ex04_12.php中所初始的陣列:
ex04_14.php
  1. <HTML>
  2. <HEAD>
  3. <TITLE>ex04_14</TITLE>
  4. </HEAD>
  5. <BODY>
  6. <table border=1>
  7. <?
  8. $Student=array(
  9. "小誌"=>array("a"=>100,2=>90,"b"=>80),
  10. "得華"=>array(1=>60,"c"=>100,3=>70),
  11. "亭封"=>array("d"=>90,2=>80,"e"=>90));

  12. foreach ($Student as $key=>$value)
  13. {
  14. echo "<tr>";
  15. foreach ($value as $key1=>$value1)
  16. {
  17. echo "<td>元素註標: $key,$key1 ; 元素值: $value1 </td>";
  18. }
  19. echo "</tr>";
  20. }
  21. ?>
  22. </table>
  23. </BODY></HTML>
複製代碼
[attach]5493[/attach]
圖4-12   ex04_14.php。




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