KT客棧

Web程式交流 & 聊幹畫 / 心情手札

【PHP】5陣列-5.3 二維陣列

*PHP  5陣列-5.3 二維陣列
5.3 二維陣列
在二維陣列中,我們雖可以直接透過迴圈來取出外層索引和鍵值,但是想要抓出內層索引和鍵值,就必須要用巢狀迴圈喔!而多維陣列的話,也一樣必須要用巢狀迴圈來取值。

在二維陣列因為有外層索引和內層索引&外層迴圈和內層迴圈的互相搭配,所以棧友們需要動邏輯思考一下
*[0]表示外層索引,['姓名']表示內層索引
$station[0]['姓名'] = 'Selena'; 
*巢狀迴圈-外層的foreach是外層迴圈,內層的是內層迴圈
foreach ($station as $k) {  //將陣列變數改為自訂的$k(代表外層索引[0])
    foreach ($k as $t => $pp) {  //$t(代表內層索引['姓名']),$pp為鍵值)
        echo $t."、".$pp;
    }
 }

以下共有3個範例,帶大家來了解一下二維陣列,範例1直接透過for迴圈來取鍵值範例2直接透過foreach迴圈來取外層索引和鍵值,範例3則是使用foreach巢狀迴圈來內層索引和鍵值。程式碼並不長,但卻貫穿了很多我們之前學習過的觀念。


#擇一選用賦值型態或是array()函式的二維陣列,內容都是一樣。
<?php
  /****以下$station部分,皆屬賦值型態的二維陣列****/
  //外層索引以數值作為索引鍵,內層索引以字串做索引鍵
  $station[0]['姓名'] = 'Selena';
  $station[0]['生命力'] = '100';
  $station[0]['戰鬥力'] = '60';

  $station[1]['姓名'] = 'Hebe';
  $station[1]['生命力'] = '70';
  $station[1]['戰鬥力'] = '68';

  $station[2]['姓名'] = 'Ella';
  $station[2]['生命力'] = '88';
  $station[2]['戰鬥力'] = '96';

  /****以下$station部分,屬於array()函式的二維陣列****/
  $station = array( array('姓名' =>'Selena' ,'生命力' =>'100' ,'戰鬥力' =>'60'),
                    array('姓名' =>'Hebe' ,'生命力' =>'70' ,'戰鬥力' =>'68'),
                    array('姓名' =>'Ella' ,'生命力' =>'88' ,'戰鬥力' =>'96'));
?>


#範例1.使用for迴圈取出二維陣列的鍵值
<?php
  //範例1.使用for迴圈取出二維陣列的鍵值
  //將外層索引使用迴圈先取出,再分別羅列內層索引
  //此時的$i就是外層索引0、1、2,並透過內層索引帶出各別鍵值
  for($i=0; $i<3;  $i++){
    echo "名字是 ".$station[$i]['姓名'].","  //呼叫外層索引0、1、2,依序取出內層索引的姓名(Selena、Hebe、Ella)
         ."生命值是 ".$station[$i]['生命力']."," //呼叫外層索引0、1、2,依序取出內層索引的姓名(100.70.88)
         ."戰鬥指數是 ".$station[$i]['戰鬥力']."<br>"; //呼叫外層索引0、1、2,依序取出內層索引的姓名(60.68.96)
  }
?>


#範例2.使用foreach迴圈取出二維陣列外層索引和鍵值
<?php
  //範例2.使用foreach迴圈取出二維陣列外層索引和鍵值
  foreach ($station as $p => $k) { //$p代表外層索引鍵[0],$k['姓名']代表接收Selena、Hebe、Ella
    echo  $p.$k['姓名'].","
            .$k['生命力'].","
            .$k['戰鬥力']."<br>";
  }
?>


#範例3.使用巢狀迴圈取出二維陣列的內層索引和鍵值
<?php
  //範例3.使用巢狀迴圈取出二維陣列的內層索引和鍵值"
  //範例3的0代表姓名(Selena、Hebe、Ella),1代表生命力(100.70.88),2代表戰鬥力(60.68.96)
  //最後內層索引由0開始取出3人的內層索引鍵和鍵值(姓名、Selena),接著是1開始取出3人的生命力及鍵值,2開始取出3人的戰鬥力及鍵值
  foreach ($station as $k) { //外層索引
    foreach ($k as $t => $pp) { //內層索引($t代表內層索引鍵[姓名],$pp代表Selena)
      if($pp >= 0){
        echo $t.":".$pp."。";
      }
    }
  }
?>





沒有留言:

張貼留言

@templatesyard