我想从一个数组中切出5个elemtens,给出一个中间索引:
$a = [1,2,3,4,5,6,7,8,9,10];
示例:
[1,2,3,4,5]
[2,3,4,5,6]
[4,5,6,7,8]
[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];
但是到达终点(双方)时它不起作用。
答案 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";
}