>我有一个这样的数组:(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);