Php 从数组返回前x个项目

Php 从数组返回前x个项目,php,arrays,Php,Arrays,我想从数组中返回前5项。如何执行此操作?-p>移除阵列的一部分,并用其他内容替换它: $input = array(1, 2, 3, 4, 5, 6); array_splice($input, 5); // $input is now array(1, 2, 3, 4, 5) 从PHP手册: array array_splice ( array &$input , int $offset [, int $length = 0 [, mixed $replacement]]) 如果省

我想从数组中返回前5项。如何执行此操作?

-p>移除阵列的一部分,并用其他内容替换它:

$input = array(1, 2, 3, 4, 5, 6);
array_splice($input, 5); // $input is now array(1, 2, 3, 4, 5)
从PHP手册:

array array_splice ( array &$input , int $offset [, int $length = 0 [, mixed $replacement]])
如果省略长度,则删除从偏移量到数组末尾的所有内容。如果指定了长度且长度为正,则将删除许多元素。如果指定了长度且长度为负,则移除部分的末端将是数组末端的那么多元素。提示:若要在指定替换时删除从偏移量到数组末尾的所有内容,请使用count($input)作为长度。

返回数组的一个片段

$sliced_array = array_slice($array, 0, 5)

是您希望在本例中返回前五个元素的代码

如果您只想输出前五个元素,您应该编写如下代码:

<?php

  if (!empty ( $an_array ) ) {

    $min = min ( count ( $an_array ), 5 );

    $i = 0;

    foreach ($value in $an_array) {

      echo $value;
      $i++;
      if ($i == $min) break;

    }

  }

?>

如果要编写返回部分数组的函数,应使用array\u slice:

<?php

  function GetElements( $an_array, $elements ) {
    return array_slice( $an_array, 0, $elements );
  }

?>


您可以使用array\u slice函数,但是否会使用其他值?还是只有前5个?因为如果只使用前5个,则可以使用SQL限制。

更面向对象的方法是为#[]方法提供一个范围。例如:

假设您想要数组中的前3项

数字=[1,2,3,4,5,6]

数字[0..2]#=>[1,2,3]

假设您想要数组中的前x项

数字[0..x-1]

此方法的优点在于,如果您请求的项目比数组的项目多,它只返回整个数组


数字[0..100]#=>[1,2,3,4,5,6]

但php不支持范围。你确定你不是在谈论ruby之类的东西吗?“一种更面向对象的方式”?这个答案与面向对象编程无关。根据php.net,返回前5个元素的语法是array_splice($input,5)@AndrejsCainikovs,“如果省略长度,那么序列将包含从偏移量到数组结束的所有内容。”答案的粗体文字正好相反。@Kalko:你可能看错了页面。我的复制粘贴声明仍然有效:@AndrejsCainikovs true mate,我有一个数组拼接页面,没有注意到你的答案是关于数组拼接的。。。my bad:Dbut这不适用于关联数组。键丢失。@ESCOBAR:关联数组不一定有顺序,它们只将键映射到值;所以“值3到7”无论如何都没有意义…对,但在这种情况下,它与顺序无关。这只是前5项。这里不能使用array\u slice。@ESCOBAR:如果没有定义的顺序,就没有第一项。只有当你能分辨出哪个项目在其他项目之前或之后时,“First”才有效。但为了好玩,您可以将键与数组的值重新组合(尽管仍然没有定义顺序):
array\u组合(array\u切片(array\u keys($array),0,5),array\u切片($array,0,5))
@darkhorizon:“
array\u切片
返回数组的切片”。但是我会编辑我的答案,让它更清楚一点。你为什么要将已经完成这项工作的现有
array\u slice()
封装到这个不必要的函数中,这样会增加开销,而且没有任何价值?