模内循环

时间:2013-07-02 09:03:54

标签: php loops math for-loop modulus

我有一个数组,我正在循环并分成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之后不会打印任何内容。我知道有一些代数数学涉及到解决这个问题,但我画了一个空白。在这些时候,我真的希望我在高中时的数学课上得到关注。

5 个答案:

答案 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  可能有用。基本上将数组拆分为块,返回多维数组