陣列是 PHP 最核心的資料結構。本文系統整理陣列常用操作,附完整可執行範例碼,涵蓋 PHP 4/5/7/8 通用語法。
<?php
$fruits = ['apple', 'orange', 'banana']; // 短陣列語法 (PHP 5.4+)
$colors = array('red', 'green', 'blue'); // 傳統語法
// 關聯陣列
$user = ['name' => 'John', 'age' => 30, 'city' => 'Taipei'];
// 檢查值是否存在
in_array('apple', $fruits); // true
array_key_exists('name', $user); // true
// 計算元素數
count($fruits); // 3
sizeof($fruits); // 別名
?>
<?php $arr = [1, 2, 3]; // 尾端新增 array_push($arr, 4, 5); // [1,2,3,4,5] $arr[] = 6; // 語法糖,最快 // 頭端新增 array_unshift($arr, 0); // [0,1,2,3,4,5,6] // 指定鍵名插入 (關聯陣列) $user['email'] = 'john@example.com'; ?>
<?php $arr = ['a', 'b', 'c', 'd']; // 刪除尾端,回傳被刪值 $last = array_pop($arr); // 'd', $arr=['a','b','c'] // 刪除頭端,回傳被刪值 $first = array_shift($arr); // 'a', $arr=['b','c'] // 依鍵名刪除 unset($arr[1]); // $arr=['b'] (鍵名保留,不重新索引) // 依值刪除 (需自行實現) $arr = array_values(array_diff($arr, ['b'])); // 重新索引 ?>
<?php $a = [1, 2]; $b = [3, 4]; $merged = array_merge($a, $b); // [1,2,3,4] (數值鍵重新索引) $merged = $a + $b; // [1,2] (鍵名衝突保留左邊) // 分割 $chunks = array_chunk([1,2,3,4,5], 2); // [[1,2],[3,4],[5]] list($first, $rest) = [reset($arr), array_slice($arr, 1)]; ?>
| 函數 | 對象 | 保持鍵名 | 排序依據 |
|---|---|---|---|
| sort | 值 | 否 | 值升序 |
| rsort | 值 | 否 | 值降序 |
| asort | 值 | 是 | 值升序 |
| arsort | 值 | 是 | 值降序 |
| ksort | 鍵 | 是 | 鍵升序 |
| krsort | 鍵 | 是 | 鍵降序 |
| usort | 值 | 否 | 自訂比較函數 |
| uasort | 值 | 是 | 自訂比較函數 |
| uksort | 鍵 | 是 | 自訂比較函數 |
<?php
$arr = [1, 2, 2, 3, 3, 3];
array_unique($arr); // [1,2,3] 去重
array_flip($arr); // 鍵值互換
array_reverse($arr); // 反轉
array_map('strtoupper', $arr); // 映射函數
array_filter($arr, fn($v) => $v > 2); // 過濾
array_reduce($arr, fn($c, $v) => $c + $v, 0); // 歸約求和
?>