array_slice() 是 PHP 操作數組切片的核心函數,靈活支援正負偏移、長度控制、鍵名保留。本文系統講解語法、參數陷阱、實戰場景(隨機抽取、分頁、首尾截取),助你玩轉數組切片。
array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false): array
>=0 從開頭數;<0 從結尾倒數(如 -1 為最後一個)。>=0 返回該數量元素;<0 結尾前截斷絕對值個元素;null 截取到結尾。true 保留原鍵名,false(預設)重置為 0 起始數字鍵。$input = ['a', 'b', 'c', 'd', 'e']; // 從索引 2 開始到結尾 print_r(array_slice($input, 2)); // ['c','d','e'] // 從倒數第 2 個開始,長度 1 print_r(array_slice($input, -2, 1)); // ['d'] // 從開頭長度 3 print_r(array_slice($input, 0, 3)); // ['a','b','c'] // 保留鍵名對比 $arr = ['a'=>'A', 'b'=>'B', 'c'=>'C']; print_r(array_slice($arr, 1, 2, false)); // [0=>'B', 1=>'C'] print_r(array_slice($arr, 1, 2, true)); // ['b'=>'B', 'c'=>'C']
$data = range(1, 100); // 假設 100 條記錄 shuffle($data); // 打亂順序 $random5 = array_slice($data, 0, 5); // 取前 5 個
$page = 3; $pageSize = 10; $offset = ($page - 1) * $pageSize; $pageData = array_slice($allData, $offset, $pageSize);
$trimmed = array_slice($arr, 1, -1); // 去掉第一個和最後一個
true 保留。array_slice($arr, 0, -2) 等同於「除了最後兩個」。$offset > count($arr) 返回空數組,不報錯。array_splice()array_splice() 會修改原數組(刪除/替換),並返回被移除部分;array_slice() 純讀取。按需選擇。
熟練掌握 array_slice(),能大幅簡化數組切片、分頁、隨機抽樣等常見邏輯。