函數原型
array_slice(array $array, int $offset, int $length = null, bool $preserve_keys = false): array
參數詳解
| 參數 | 說明 |
$array | 輸入數組 |
$offset | 起始位置。正數從開頭計數,負數從結尾倒數(如 -2 表示倒數第 2 個) |
$length | 可選。返回片段長度。正數向後取,負數從結尾倒數取絕對值個元素。省略則取到結尾 |
$preserve_keys | 可選。true 保留原鍵名,false(默認)重置數值索引 |
示例集錦
1. 基本截取:從索引 1 開始取 2 個元素
$a = [0=>"Dog", 1=>"Cat", 2=>"Horse", 3=>"Bird"];
print_r(array_slice($a, 1, 2));
// Array ( [0] => Cat [1] => Horse )
2. 負數 offset:取倒數第 2 個元素,長度 1
print_r(array_slice($a, -2, 1));
// Array ( [0] => Horse )
3. 保留鍵名
print_r(array_slice($a, 1, 2, true));
// Array ( [1] => Cat [2] => Horse )
4. 字符串鍵名數組(關聯數組)默認保留鍵
$b = ["a"=>"Dog", "b"=>"Cat", "c"=>"Horse", "d"=>"Bird"];
print_r(array_slice($b, 1, 2));
// Array ( [b] => Cat [c] => Horse ) // 鍵名自動保留
常見用途
- 分頁處理:
array_slice($data, ($page-1)*$size, $size)
- 獲取前 N 條:
array_slice($arr, 0, 10)
- 獲取最後 N 條:
array_slice($arr, -5)
- 刪除指定範圍元素: 配合
array_splice()(見下文)
陷阱提醒
- 若
$offset > count($array) 返回空數組,不報錯。
$preserve_keys=true 時,數值鍵名也會保留,可能導致後續 array_merge() 行為異常。