Php 从数组返回前x个项目
我想从数组中返回前5项。如何执行此操作?-p>移除阵列的一部分,并用其他内容替换它: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]]) 如果省
$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()
封装到这个不必要的函数中,这样会增加开销,而且没有任何价值?