$people = [
"amy" => 32,
"jon" => 24,
"tim" => 30
];
這是一個很典型的一維關聯陣列,一個key對應一個value,那要怎麼取值呢?
可以用 foreach 這個專門用來跑陣列迴圈的方式來把值一個一個取出來
foreach($people as $name => $age)
echo $name . ":" . $age . "<br>";
// 輸出:
// amy:32
// jon:24
// tim:30
$name:陣列的 key
$age:陣列的 value
二維陣列就是 一個陣列裡面又放了很多個陣列。
以 索引關聯陣列
來解釋
$people= [
["student" => "amy"], // 外層索引0 (key)
["teacher" => "jon"],// 索引1 (key)
["coach" => "tim"] // 索引2 (key)
];
**這是一個people陣列,這個陣列裡面又放了3個陣列,所以這個people又稱為2維陣列
外層陣列($people)包含三個內層陣列
外層陣列的 key 為索引:0、1、2
外層陣列的 value 是內層陣列
內層陣列也有自己的 key/value
外層索引 | 外層 value | 內層 key | 內層 value |
---|---|---|---|
0 | ["student"=>"amy"] | student | amy |
1 | ["teacher"=>"jon"] | teacher | jon |
2 | ["coach"=>"tim"] | coach | tim |
理解到這邊,來驗證一下,取出他外層的key
foreach($people as $key => $value) {
echo $key ."<br>";
}
//輸出
//0
//1
//2
取出外層的value
foreach($people as $key => $value) {
print_r($value);
echo "<br>";
}
//輸出
// Array ( [student] => amy )
// Array ( [teacher] => jon )
// Array ( [coach] => tim )
解釋一下這裡為什麼要用 print_r而不直接echo,因為echo是直接輸出字串而people外層陣列的value是陣列而非字串,所以用echo的話會報錯。
接下來要取內層的key和value, 這需要用到雙層迴圈(又稱為巢狀迴圈)
為什麼要用到雙層呢,可以用程式碼來解釋
foreach($people as $person) { // 外層迴圈抓每個內層陣列
foreach($person as $key=>$value) { // 內層迴圈抓內層 key和value
echo $key .":" . $value ."<br>";
}
}
//輸出
//student:amy
//teacher:jon
//coach:tim
解釋:
第一行:foreach($people as $person)
$people
(外層陣列),每次抓一個內層陣列賦值給 $person
。第二行:foreach($person as $key => $value)
$person
現在是一個內層陣列。巢狀迴圈思路:
外層迴圈抓一個內層陣列 → 內層迴圈抓該陣列的每個 key/value
今天這篇筆記,觀念十分重要,我整理了很久,明天可以來學陣列函式了