➤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."。";
}
}
}
?>
沒有留言:
張貼留言