在PHP 中, array_chunk是一個非常實用的函數,可以將一個大數組分割成多個小數組,並且它還允許我們定義每個小數組的最大長度。
函數簽名如下:
array_chunk(array $array, int $length, bool $preserve_keys = false): array
$array :輸入的數組。
$ length :每個分割數組的長度。
$preserve_keys :如果設置為true ,則返回的數組將保留原數組的鍵名;如果為false ,則返回的數組會重新生成連續的數字鍵名。
默認情況下, array_chunk會根據第三個參數$preserve_keys來決定是否保留原數組的鍵名:
當$preserve_keys設置為false (默認值)時,返回的新數組將使用連續的數字鍵名,從0開始。
當$preserve_keys設置為true時,新數組將保留原數組的鍵名。
<?php
$array = [10 => 'a', 20 => 'b', 30 => 'c', 40 => 'd', 50 => 'e'];
$result = array_chunk($array, 2);
print_r($result);
?>
輸出結果:
Array
(
[0] => Array
(
[0] => a
[1] => b
)
[1] => Array
(
[0] => c
[1] => d
)
[2] => Array
(
[0] => e
)
)
如您所見,在上述代碼中, $preserve_keys默認為false ,因此返回的數組的鍵名被重新編號為0, 1, 2 ,並不保留原數組中的10, 20, 30等鍵名。
<?php
$array = [10 => 'a', 20 => 'b', 30 => 'c', 40 => 'd', 50 => 'e'];
$result = array_chunk($array, 2, true);
print_r($result);
?>
輸出結果:
Array
(
[10] => Array
(
[0] => a
[1] => b
)
[20] => Array
(
[0] => c
[1] => d
)
[30] => Array
(
[0] => e
)
)
在這個例子中, $preserve_keys被設置為true ,因此返回的數組保留了原始數組中的鍵名: 10, 20, 30 。
當$preserve_keys設置為false時,返回的新數組的鍵名是連續的。也就是說,新的數組將從0開始,並以連續的數字進行編號。
當$preserve_keys設置為true時,返回的新數組將保留原始的鍵名,因此新數組的鍵名可能不是連續的,而是與原始數組中相應分割部分的鍵名一致。
array_chunk的行為取決於$preserve_keys參數:
默認情況下( $preserve_keys = false ),新數組的鍵名是連續的,從0開始。
如果設置$preserve_keys = true ,新數組將保留原始數組的鍵名。
如果您需要一個連續的數字鍵名,您應該將$preserve_keys設置為false ,否則可以保留原始鍵名。