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_chunk が役立つ場合があります。基本的に配列をチャンクに分割し、多次元配列を返します

于 2013-07-02T09:09:38.050 に答える
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 に答える