0

我有一个数组,我正在循环遍历并分解为 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. 我知道解决这个问题涉及一些代数数学,但我正在画一个空白。像这样的时代,我真希望我在高中的数学课上能集中注意力。

4

5 回答 5

4

我认为array_chunk符合您的要求并且不需要数学。

$result_array = array_chunk($array, 50, true);
于 2013-07-02T09:07:56.120 回答
1

添加附加条件

if ($i % 50 == 1 || count($array)-1 == $i)
于 2013-07-02T09:08:51.260 回答
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

于 2013-07-02T09:07:14.290 回答
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

循环完成后,您将拥有剩余的 201 到 220 个条目$j,因此请再次执行您的操作。

于 2013-07-02T09:07:23.423 回答
0

array_chunk 可能有用。基本上将数组拆分成块,返回一个多维数组

于 2013-07-02T09:09:38.050 回答