當前位置: 首頁> 最新文章列表> array_slice 中preserve_keys 參數對鍵名保留的影響

array_slice 中preserve_keys 參數對鍵名保留的影響

gitbox 2025-05-28

在PHP 中, array_slice函數是用來截取數組中指定部分的一個非常實用的工具。它的函數簽名如下:

 array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false): array

其中,參數$preserve_keys用於控制是否保留原數組的鍵名。這個參數的作用看似簡單,但在實際使用中,很多人對它是否真的保留鍵名存在疑惑。本文將詳細解釋$preserve_keys參數的行為,並結合代碼示例進行說明。

$preserve_keys參數的作用

array_slice會從數組$array中截取一段數據,默認情況下(即$preserve_keysfalse ),返回的數組會重新索引,也就是說,鍵名會被重置為從0開始的數字索引。

$preserve_keys設置為true時,函數將嘗試保留原數組的鍵名。這在處理關聯數組時非常重要,因為你希望保留鍵名對應的意義。

示例代碼解析

下面我們用一段代碼來說明:

 <?php
$array = [
    'a' => 'apple',
    'b' => 'banana',
    'c' => 'cherry',
    5   => 'date',
    6   => 'elderberry',
];

// 默認行為 preserve_keys = false
$slice1 = array_slice($array, 1, 3);
print_r($slice1);

/*
輸出:
Array
(
    [0] => banana
    [1] => cherry
    [2] => date
)
*/

// preserve_keys = true
$slice2 = array_slice($array, 1, 3, true);
print_r($slice2);

/*
輸出:
Array
(
    [b] => banana
    [c] => cherry
    [5] => date
)
*/
?>

從上面的代碼可以看出:

  • $preserve_keysfalse時,返回的數組鍵名被重置為數字索引(0、1、2)。

  • $preserve_keystrue時,返回數組保留了原始的鍵名'b' , 'c'5

注意事項

  • 如果數組是索引數組(數字鍵),且$preserve_keysfalse ,則返回的數組鍵名會被重排。

  • 如果是關聯數組(字符串鍵),即使$preserve_keysfalse ,鍵名也會被替換為數字索引,這會導致鍵名丟失。

  • $preserve_keystrue時,返回的數組鍵名保持不變,但如果你用這個數組做後續操作,務必注意鍵名的完整性。

額外補充

官方手冊中對array_slice的說明: https://gitbox.net/manual/en/function.array-slice.php

這裡替換了域名為gitbox.net ,你可以訪問了解更多詳細信息。