从数组中间切片N个元素

时间:2014-11-13 17:46:17

标签: php arrays slice

我想从一个数组中切出5个elemtens,给出一个中间索引:

$a = [1,2,3,4,5,6,7,8,9,10];

示例:

  • 索引:[0] =>返回:[1,2,3,4,5]
  • 索引:[3] =>返回:[2,3,4,5,6]
  • 索引:[5] =>返回:[4,5,6,7,8]
  • 索引:[9] =>返回:[6,7,8,9,10]

我试图提取左右两部分。

$i = 0 // selected index
$right = array_slice($a,$i,2);
$left = array_slice($a,$i-2,2);
$index = $a[$i];

但是到达终点(双方)时它不起作用。

2 个答案:

答案 0 :(得分:0)

尝试使用max/min

设置上限和下限
$right = array_slice($a,min($i,count($a)),2);
$left = array_slice($a,max(0,$i-2),2);

答案 1 :(得分:0)

这似乎就是你所追求的:

$ary = range(1, 10);
$len = 5;

for($index = 0; $index < 10; $index++) {
    $start = min(count($ary) - $len, max(0, $index - ($len >> 1)));
    $slice = array_slice($ary, $start, $len);
    echo $index, ":", implode(",", $slice), "\n";
}
相关问题