获取数组的前N个元素?

260
什么是最佳方法来实现这个?

9
如果你需要寻找一个用于处理数组的函数,可以前往这个网站:http://www.php.net/manual/en/function.array.php 并查看其中的函数。请注意,不要改变原文的意思,只需简化表达并保持语义一致即可。 - Galen
29
与其来到SO,不如...(需要上下文才能确定更精确的翻译) - Hrishikesh Choudhari
5个回答

453

使用array_slice()

这是来自PHP手册的例子:array_slice

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

只有一个小问题

如果数组索引对你很重要,记得 array_slice 会重置和重新排序数字数组索引。你需要将preserve_keys标志设置为true以避免这种情况。(第四个参数,自 PHP 5.0.2 以来可用)。

示例:

$output = array_slice($input, 2, 3, true);

输出:

array([3]=>'c', [4]=>'d', [5]=>'e');

34
您可以使用array_slice函数,例如:
$sliced_array = array_slice($array,0,$N);

12
在目前的排序中,我会说array_slice()。因为它是一个内置函数,所以比循环遍历数组并跟踪递增索引直到N要快。

8

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));
?>

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)


3
使用array_splice函数时,您无需创建新数组。在使用array_splice函数后,$old_array将变为“没有n个元素的数组”。如果您不再需要具有所有元素的原始数组,请仅使用array_splice函数。因此,它不会按要求获取元素,而是从原始数组中删除最后的n个元素。 - lisandro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接