获取数组的前N个元素?

GSt*_*Sto 188 php arrays

完成此任务的最佳方法是什么?

cor*_*cho 333

使用array_slice()

这是PHP手册中的一个示例:array_slice

$input = array("a", "b", "c", "d", "e");
$output = array_slice($input, 0, 3);   // returns "a", "b", and "c"
Run Code Online (Sandbox Code Playgroud)

只有一个小问题

如果数组索引对您有意义,请记住这array_slice将重置并重新排序数值数组索引.您需要设置preserve_keys标志true以避免这种情况.(第4个参数,自5.0.2起可用).

例:

$output = array_slice($input, 2, 3, true);
Run Code Online (Sandbox Code Playgroud)

输出:

array([3]=>'c', [4]=>'d', [5]=>'e');
Run Code Online (Sandbox Code Playgroud)


cod*_*ict 27

您可以使用array_slice:

$sliced_array = array_slice($array,0,$N);
Run Code Online (Sandbox Code Playgroud)


Fan*_*nis 12

按目前的顺序?我会说array_slice().由于它是一个内置函数,它比循环遍历数组更快,同时跟踪增量索引直到N.


Sta*_*tar 5

array_slice()是最好的尝试,以下是示例:

<?php
$input = array("a", "b", "c", "d", "e");

$output = array_slice($input, 2);      // returns "c", "d", and "e"
$output = array_slice($input, -2, 1);  // returns "d"
$output = array_slice($input, 0, 3);   // returns "a", "b", and "c"

// note the differences in the array keys
print_r(array_slice($input, 2, -1));
print_r(array_slice($input, 2, -1, true));
?>
Run Code Online (Sandbox Code Playgroud)


Alo*_*man 5

如果你想获取前 N 个元素并将其从数组中删除,你可以使用array_splice()(注意“splice”中的“p”):

http://docs.php.net/manual/da/function.array-splice.php

像这样使用它:$array_without_n_elements = array_splice($old_array, 0, N)

  • 使用 array_splice 你不需要创建一个新数组,在 array_spliced $old_array 之后将成为“没有 n 个元素的数组”。如果不再需要原始数组及其所有元素,请仅使用 array_splice。因此它没有按照要求获取元素,而是从原始数组中删除最后 n 个元素。 (3认同)