获取数组的前N个元素?

实现这一目标的最佳方法是什么?

190110 次浏览

在现在的顺序吗?我会说array_slice ()。由于它是一个内置函数,它将比循环遍历数组,同时跟踪一个递增的索引直到N更快。

使用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标志设置为__abc2来避免这种情况。(第4个参数,自5.0.2起可用)。

例子:

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

输出:

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

你可以使用array_slice作为:

$sliced_array = array_slice($array,0,$N);

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

如果你想从数组中移除前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)