在 PHP 中,可以使用以下方法之一来分割数组:
-
array_chunk()
函数:将一个数组分割成多个小的数组块。每个小数组块的大小由指定的长度参数决定。$arr = array("a", "b", "c", "d", "e", "f", "g", "h"); $chunks = array_chunk($arr, 3); print_r($chunks);
在上面的示例中,
array_chunk()
函数将$arr
数组分割成了大小为 3 的小数组块,并将这些数组块存储在$chunks
数组中。print_r()
函数用于打印数组的内容。输出结果:
Array ( [0] => Array ( [0] => a [1] => b [2] => c ) [1] => Array ( [0] => d [1] => e [2] => f ) [2] => Array ( [0] => g [1] => h ) )
-
array_slice()
函数:从一个数组中取出一段连续的元素(可以用负数索引从末尾开始计算)。$arr = array("a", "b", "c", "d", "e", "f", "g", "h"); $slice1 = array_slice($arr, 0, 3); $slice2 = array_slice($arr, 3, 3); $slice3 = array_slice($arr, -2); print_r($slice1); print_r($slice2); print_r($slice3);
在上面的示例中,
array_slice()
函数将$arr
数组分割成了三个小数组块,并将这些数组块存储在$slice1
、$slice2
和$slice3
中。第一个参数是原数组,第二个参数是从哪个索引开始取元素,第三个参数是取多少个元素。如果省略第三个参数,则会取出从第二个参数指定的索引到原数组的末尾的所有元素。输出结果:
Array ( [0] => a [1] => b [2] => c ) Array ( [0] => d [1] => e [2] => f ) Array ( [0] => g [1] => h )
-
array_splice()
函数:从一个数组中移除一段连续的元素,并将它们替换为其他元素。$arr = array("a", "b", "c", "d", "e", "f", "g", "h"); $removed = array_splice($arr, 2, 3, array("x", "y", "z")); print_r($removed); print_r($arr);
在上面的示例中,array_splice()
函数将 $arr
数组中从索引 2
开始的 3 个元素(‘c’,‘d’ 和 ‘e’)移除,并用 array("x", "y", "z")
中的元素替换它们。移除的元素被存储在 $removed
数组中。第一个参数是要修改的数组,第二个参数是从哪个索引开始移除元素,第三个参数是要移除多少个元素,后面的参数是要插入到原数组中的元素。
输出结果:
Array
(
[0] => c
[1] => d
[2] => e
)
Array
(
[0] => a
[1] => b
[2] => x
[3] => y
[4] => z
[5] => f
[6] => g
[7] => h
)
在 PHP 8 中,可以使用 array_chunk()
函数来将一个数组分割成多个小数组块,每个小数组块的大小由指定的长度参数决定。与 PHP 7 不同的是,在 PHP 8 中,可以使用问号 (?) 来为函数参数设置默认值。因此,可以设置第二个参数 $size
的默认值为 1
。
以下是一个例子:
$arr = ["a", "b", "c", "d", "e", "f", "g", "h"];
$chunks = array_chunk($arr, size: 3);
print_r($chunks);
在上面的示例中,array_chunk()
函数将 $arr
数组分割成大小为 3 的小数组块,并将这些数组块存储在 $chunks
数组中。size:
语法用于指定 $size
参数的值。注意,当使用问号来为参数设置默认值时,不能再使用传统的位置参数来调用函数,而必须使用关键字参数来调用函数。
输出结果为:
Array
(
[0] => Array
(
[0] => a
[1] => b
[2] => c
)
[1] => Array
(
[0] => d
[1] => e
[2] => f
)
[2] => Array
(
[0] => g
[1] => h
)
)
值得注意的是,PHP 8 中的 array_chunk()
函数还支持通过指定第三个参数 $preserve_keys
来保留原数组中的键,而不是重置键。如果将 $preserve_keys
参数设置为 true
,则新的小数组块将带有与原始数组相同的键。如果将其设置为 false
,则新的小数组块将重置键并按顺序从 0 开始编号。可以像这样使用关键字参数来指定 $preserve_keys
参数的值:
$arr = ["a" => 1, "b" => 2, "c" => 3, "d" => 4, "e" => 5];
$chunks = array_chunk($arr, size: 2, preserve_keys: true);
print_r($chunks);
在上面的示例中,$arr
数组中的元素都有一个关联键。array_chunk()
函数将 $arr
数组分割成大小为 2 的小数组块,并将这些数组块存储在 $chunks
数组中。通过将 preserve_keys:
参数设置为 true
来保留原数组的关联键。输出结果如下:
Array
(
[0] => Array
(
[a] => 1
[b] => 2
)
[1] => Array
(
[c] => 3
[d] => 4
)
[2] => Array
(
[e] => 5
)
)