使用PHP模数每第n次迭代转储数据集

时间:2016-02-18 21:28:07

标签: php mysql foreach

我有以下php代码:

<?php
$numbers=array (
  '1',
  '2',
  '3',
  '4',
  '5',
  '6',
  '7',
  '8',
  '9',
  '10',
  '11',
);

$output = array();

foreach($numbers as $i=>$number)
{
    $output[]= $number;

    if(($i+1) % 3 == 0)
    {
        var_dump($output);
        $output=array();
    }
}

输出以下内容:

array(3) {
  [0]=>
  string(1) "1"
  [1]=>
  string(1) "2"
  [2]=>
  string(1) "3"
}
array(3) {
  [0]=>
  string(1) "4"
  [1]=>
  string(1) "5"
  [2]=>
  string(1) "6"
}
array(3) {
  [0]=>
  string(1) "7"
  [1]=>
  string(1) "8"
  [2]=>
  string(1) "9"
}

我一直在敲我的头,还要抛弃其余的东西,就像这样:

array(2) {
  [0]=>
  string(1) "10"
  [1]=>
  string(1) "11"
}

我知道有一种方法可以使用模数运算符,我几个月前看到它是一个片段,但现在我找不到它。我认为他们在模数线上使用减法。

如果有帮助,var_dump将被插入mysql的语句替换。

提前致谢。

3 个答案:

答案 0 :(得分:1)

另一个选择:预先计算数组,如果你在最后,请检查你的循环。

$last_key = count($numbers) -1;
$output = array();

foreach($numbers as $i=>$number)
{
    $output[]= $number;

    if(($i+1) % 3 == 0 || $i == $last_key && $output)
    {
        var_dump($output);
        $output=array();
    }
}

我喜欢这样做,因为你不必在循环结束后重复循环中的代码。

答案 1 :(得分:0)

你不需要另外的计算,只需要循环后的var_dump并清除你的输出数组,如果你想让它最终为空。

console.log

答案 2 :(得分:-3)

为什么不算数?

$i=0;
foreach($numbers as $key=>$number)
{
    $output[]= $number;

    if(($i+1) % 3 == 0)
    {
        var_dump($output);
        $output=array();
    }
    $i++;
}

或直接使用$ number。