PHP 陣列是**有序映射**,鍵可為整數或字串,值可為任意型別。可視為記憶體內的小型資料庫,減少 I/O 提升效能。
$a = "abcd"; echo $a[0] . " " . $a[1] . " " . $a[2] . " " . $a[3]; // 輸出:a b c d
字串可用索引存取單一字元,但**無法新增元素**。
array() 語言結構(標準做法)$http = array("www", "helpphp", "cn");
echo $http[0] . "." . $http[1] . "." . $http[2]; // 輸出:www.helpphp.cn
重點:未指定鍵名時,索引從 0 起始遞增。
$fruits = ["apple", "banana", "orange"]; // 等同 array(...)
$myArray = []; // 建立空陣列 $myArray[] = "www"; // 索引 0 $myArray[] = "helpphp"; // 索引 1 $myArray[] = "cn"; // 索引 2 echo $myArray[1]; // 輸出:helpphp print_r($myArray); // 完整結構檢視
unset($myArray[0]); // 刪除索引 0,其餘索引**不重排**,保留原位置 unset($myArray); // 銷毀整個陣列變數
注意:unset() 後索引會出現斷層,若需重排索引可用 array_values()。
var_dump($myArray); // 顯示型別、長度、鍵值細節,除錯首選
// 關聯陣列
$user = [
"name" => "小明",
"email" => "ming@example.com",
"roles" => ["admin", "editor"]
];
// 存取
echo $user["name"]; // 小明
echo $user["roles"][0]; // admin
// 動態新增
$user["phone"] = "0912-345678";
| 任務 | 函數/語法 | 備註 |
|---|---|---|
| 合併陣列 | array_merge($a, $b) | 數字鍵重排,字串鍵後者覆蓋 |
| 鍵名是否存在 | array_key_exists($key, $arr) / isset($arr[$key]) | isset 速度較快但 null 值會回傳 false |
| 搜尋值回傳鍵 | array_search($val, $arr) | 嚴格比較用 in_array($val, $arr, true) |
| 去除重複值 | array_unique($arr) | 保留第一次出現的鍵 |
| 反轉陣列 | array_reverse($arr, true) | 第二參數 true 保留鍵名 |
| 切片 | array_slice($arr, $offset, $len, true) | 保留鍵名加 true |
unset() 釋放不再使用的大型陣列foreach ($arr as $val),需鍵值用 foreach ($arr as $k => $v)count() 在迴圈條件中會重複計算,先存變數:$len = count($arr); for ($i=0; $i<$len; $i++)