PHP 从数组中保留三个元素,然后丢弃两个,然后保留三个,然后丢弃两个,依此类推



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

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

有很多

选项,最干净的代码可能是:

$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 的大量调用可能不是性能最高的方法。

嘿,

我有另一个不使用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);

相关内容

最新更新