我有一个代码,可以在循环中对数组的一部分执行某些操作:
for($i = 0; $i<=sizeof($posts); $i+=21){
$postsToCheck = array_slice($posts, $i, $i+20);
//var_dump($postsToCheck);
doSomething($postsToCheck);
}
但是它并不能正常工作。数组的每个部分都应包含20条记录,但这只是第一次迭代中的情况。第二个有41条记录,第三个有62条记录。
如何在每次迭代中将该数组分为20条记录?
答案 0 :(得分:4)
可以用array_chunk
代替:
foreach (array_chunk($posts, 20) as $postsToCheck) {
doSomething($postsToCheck);
}
正确的for
循环是:
for($i = 0; $i<=sizeof($posts); $i+=20){
// third argument of `array_slice` is "size of slice", it is 20
$postsToCheck = array_slice($posts, $i, 20);
doSomething($postsToCheck);
}
答案 1 :(得分:0)
在这样的循环中,这是array_slice的正确行为。
您可以使用以下内容:
foreach (array_chunk($posts, 20) as $chunkedPosts) {
doSomething($chunkedPosts);
}
答案 2 :(得分:0)
您可以使用array_chunk,
$lenght = 20;
array_chunk($posts, 20) => /* after then go loop */
如果要array_slice
for($i = 0; $i<=sizeof($posts); $i+=($lenght)){
$postsToCheck = array_slice($posts, $i, $lenght);
doSomething($postsToCheck);
}