我有一个这样的数组:(0,1,2,3,4,5,6,7,8,9,10)。我想保留前三个(0,1,2),然后删除接下来的两个(即3,4),然后保留三个(6,7,8),然后删除两个(9,10)直到数组完全循环。
我确信有一个简单的解决方案,我只是没有看到!
答案 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);