从数组中返回前x个项目
我想从数组中返回前5个项目。 我怎样才能做到这一点?
array_slice
返回一个数组的片段
$sliced_array = array_slice($array, 0, 5)
是你想要返回前五个元素的代码
array_splice – 删除数组的一部分,并用其他东西replace它:
$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]])
如果省略了长度,则删除从偏移量到数组末尾的所有内容 。 如果长度被指定并且是正的,那么许多元素将被移除。 如果指定了长度并且是负数,那么被移除部分的结尾将是数组末尾的许多元素。 提示:如果还指定了replace,则要从偏移量到数组末尾删除所有内容,请使用count($ input)作为长度。
如果你只是想输出前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_slice:
<?php function GetElements( $an_array, $elements ) { return array_slice( $an_array, 0, $elements ); } ?>
你可以使用array_slice函数,但是你会使用其他值吗? 还是只有第5个? 因为如果你只使用前5个,你可以使用SQL上的LIMIT。
更加面向对象的方式是为#[]方法提供一个范围。 例如:
假设你想要一个数组的前3个项目。
数字= [1,2,3,4,5,6]
数字[0..2]#=> [1,2,3]
假设你想要一个数组中的第一个x项目。
号码[0..X-1]
关于这个方法的好处是如果你要求比数组多的项目,它只是返回整个数组。
数字[0..100]#=> [1,2,3,4,5,6]