我有一个数组,我正在循环并分成50个块。但偶尔,该数组中的项目数量多于50个前面的那个数量:
$array = array(); // has 220 rows
for ($i = 0; $i < count($array); $i++) {
$j[] = $i;
if ($i % 50 == 1) {
print_r($j); // do something here with the 50 rows
$j = null;
}
}
这里的问题是201
之后不会打印任何内容。我知道有一些代数数学涉及到解决这个问题,但我画了一个空白。在这些时候,我真的希望我在高中时的数学课上得到关注。
答案 0 :(得分:4)
我认为array_chunk符合您的要求,无需数学。
$result_array = array_chunk($array, 50, true);
答案 1 :(得分:1)
添加其他条件
if ($i % 50 == 1 || count($array)-1 == $i)
答案 2 :(得分:0)
你只需要重新声明阵列就是我的猜测:
$array = array(); // has 220 rows
for ($i = 0; $i < count($array); $i++) {
$j[] = $i;
if ($i % 50 == 1) {
print_r($j); // do something here with the 50 rows
$j = array() ;
}
}
执行$j = null
后,您无法执行$j[] = $i
答案 3 :(得分:0)
$array = array(); // has 220 rows
for ($i = 0; $i < count($array); $i++) {
$j[] = $i;
if ($i % 50 == 1) {
doSomething($j); // do something here with the 50 rows
$j = array(); // reset the array
}
}
doSomething($j); // with the last 20 entries
完成循环后,您将在$j
中拥有剩余的201到220个条目,所以只需重新做一遍。
答案 4 :(得分:0)
array_chunk 可能有用。基本上将数组拆分为块,返回多维数组