PHP - 多維數組:初學者指南

你好,未來的PHP大師!今天,我們將踏上一段令人興奮的旅程,進入多維數組的世界。別擔心這聽起來有點嚇人 - 我保證我們會一步步來,到了這個教學的結尾,你將會像專家一樣玩轉數組!

PHP - Multidimensional Array

什麼是多維數組?

在我們深入之前,讓我們從基礎開始。想像一個數組就像一個簡單的物品清單,比如購物清單。現在,如果你想要按照商店組織你的購物清單呢?這就是多維數組派上用場的地方!

多維數組本質上是一個數組的數組。這就像擁有一個文件櫃(主數組)和不同的抽屜(子數組),每個抽屜裡包含著各種物品。

讓我們看一個簡單的例子:

$shopping = array(
"Grocery" => array("Apples", "Bread", "Milk"),
"Hardware" => array("Hammer", "Nails", "Screwdriver")
);

在這個例子中,$shopping 是我們的多維數組。它包含了兩個子數組:"Grocery" 和 "Hardware",每個都有自己的物品清單。

如何訪問二維數組的元素

現在,我們已經創建了我們的多維數組,我們如何訪問它的元素呢?這非常簡單!我們使用多個方括號 [],每一個維度使用一個。

<?php
$shopping = array(
"Grocery" => array("Apples", "Bread", "Milk"),
"Hardware" => array("Hammer", "Nails", "Screwdriver")
);

echo $shopping["Grocery"][0]; // 輸出:Apples
echo $shopping["Hardware"][2]; // 輸出:Screwdriver
?>

在第一個 echo 語句中,我們訪問 "Grocery" 子數組,然後訪問其中的第一個物品(索引 0)。第二個 echo 語句訪問 "Hardware" 子數組中的第三個物品(索引 2)。

遍歷二維數組

現在,如果我們想要遍歷我們多維數組中的所有物品呢?這時迭代就派上用場了。我們可以使用嵌套的 foreach 循環來遍歷數組的每一個維度。

<?php
$shopping = array(
"Grocery" => array("Apples", "Bread", "Milk"),
"Hardware" => array("Hammer", "Nails", "Screwdriver")
);

foreach ($shopping as $store => $items) {
echo "在 $store 購物:\n";
foreach ($items as $item) {
echo "- $item\n";
}
echo "\n";
}
?>

這段代碼將輸出:

在 Grocery 購物:
- Apples
- Bread
- Milk

在 Hardware 購物:
- Hammer
- Nails
- Screwdriver

外部 foreach 循環遍歷每一個商店,而內部 foreach 循環則遍歷每一個商店中的物品。

多維數組(超過二維)

現在,讓我們升級一個等級!數組可以有多於兩個維度。讓我們創建一個三維數組來表示一個學校,其中有年級、班級和學生:

<?php
$school = array(
"Grade 1" => array(
"Class A" => array("John", "Emma", "Michael"),
"Class B" => array("Sophia", "William", "Olivia")
),
"Grade 2" => array(
"Class A" => array("James", "Ava", "Alexander"),
"Class B" => array("Charlotte", "Benjamin", "Mia")
)
);

// 訪問特定學生
echo $school["Grade 1"]["Class A"][1]; // 輸出:Emma

// 遍歷整個結構
foreach ($school as $grade => $classes) {
echo "$grade:\n";
foreach ($classes as $class => $students) {
echo "  $class:\n";
foreach ($students as $student) {
echo "    - $student\n";
}
}
echo "\n";
}
?>

這將輸出整個學校結構,按年級、班級和學生逐一列出。

遞歸遍歷多維數組

當我們處理可能具有未知維度的數組時,遞歸函數會來幫助我們。這裡有一個可以遍歷任何多維數組的函數:

<?php
function traverseArray($arr) {
foreach ($arr as $key => $value) {
if (is_array($value)) {
echo "$key 是一個數組:\n";
traverseArray($value);
} else {
echo "$key: $value\n";
}
}
}

$complex_array = array(
"Fruits" => array(
"Red" => array("Apple", "Cherry"),
"Yellow" => "Banana"
),
"Vegetables" => array(
"Leafy" => array("Spinach", "Kale"),
"Root" => "Carrot"
),
"Quantity" => 10
);

traverseArray($complex_array);
?>

這個函數將遍歷任何數組,無論它有多少維度!

結論

好了,各位!我們已經穿越了PHP中多維數組的迷人世界。記住,熟練來自練習,所以不要害怕嘗試這些概念。創建你自己的複雜數組,嘗試訪問不同的元素,並看看當你修改它們時會發生什麼。

在我們結束之前,讓我們總結一下我們學會的關鍵方法來操作多維數組:

方法 描述
數組創建 使用嵌套的 array()[] 語法
元素訪問 使用多個方括號 [][]
遍歷 使用嵌套的 foreach 循環
遞歸遍歷 創建一個遞歸函數

繼續編程,持續學習,在你意識到之前,你將能夠輕鬆地創建複雜數據結構。直到下一次,快樂PHP編程!

Credits: Image by storyset