PHP从数组中保留三个元素,然后丢弃两个,然后保留三个,然后丢弃两个,等等

时间:2017-04-03 16:20:51

标签: php arrays

我有一个这样的数组:(0,1,2,3,4,5,6,7,8,9,10)。我想保留前三个(0,1,2),然后删除接下来的两个(即3,4),然后保留三个(6,7,8),然后删除两个(9,10)直到数组完全循环。

我确信有一个简单的解决方案,我只是没有看到!

2 个答案:

答案 0 :(得分:0)

相当多的选择,最干净的代码可能是:

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

for ($i = 0; $i < count($array); $i += 5) {
    $new_array = array_merge($new_array, array_slice($array, $i, 3));
}

print_r($new_array);

但是对array_merge的大量调用可能不是大型数组最高效的方法。

答案 1 :(得分:0)

嘿我有另一个没有使用array_merge的解决方案,根据@avy解决方案,它不是大型数组的最佳性能方法。我没有使用任何额外的阵列。

$arr = array(0,1,2,3,4,5,6,7,8,9,10);
$len = sizeOf($arr);
$count = 0;
$i=0;
while($i<$len){
    $count++;
    if($count==3){
            array_splice($arr,$i+1,2);
            $count = 0;
            $len = sizeOf($arr);
    }
    $i++;
 }
print_r($arr);