【问题标题】:Increment int var every 10 iterations of loop [duplicate]每 10 次循环迭代增加 int var [重复]
【发布时间】:2012-05-19 01:42:05
【问题描述】:

我正在构建一个长长的虚拟数据查询。我有一个 for 循环运行了几千次,在每个循环中,它向查询添加一个新行,增量变量用于虚拟文件名、1.png、2.png 等。我还需要增加一个单独的外键 id,但它只需要每 10 次循环迭代。谁能帮忙?谢谢。

$var = '';
for($i=0;$i<100;$i++){
    $path = '/test' . $i . '.pdf';
    $mess = 'Test message '. substr(md5($i), 0, 10);
    $did = 0;//How to increment this var by 1 every 10 iterations?
    $var .= "INSERT INTO `message` (`design_id`, `path`, `message`) VALUES ('$did', '$path', '$mess');"."<br />";
}
echo $var;

【问题讨论】:

    标签: php


    【解决方案1】:

    $i+=10

    例子:

    for ($i=0; $i<100; $i+=10) {
    }
    

    【讨论】:

      【解决方案2】:

      您可以使用modulus operator:

      $did = 0;
      for($i=0;$i<100;$i++){
          $did += $i % 10 == 9;
      }
      

      表达式$i % 10 从 0 开始,增加到 9 (10 - 1),然后无限期地“环绕”。 $did 每次求值时都会增加到 9,即每 10 次迭代。

      有趣的是,您可以使用 [0, 9] 范围内的 任何 值进行比较,它仍然会以相同的速率增加 $did;不同之处在于第一次增加何时发生。通过选择 9 增加发生在第 10 次、第 20 次等迭代。如果您选择 0,则会在 1 日、11 日、21 日等发生增长。

      最后,如果这种技术是新的,那么使用额外的括号可能会更舒服,例如

      $did += ($i % 10 == 9);
      

      甚至是独立的if 声明。

      【讨论】:

      • 乔恩回答得更好更快:)
      【解决方案3】:

      分而治之。

      $did = floor(i / 10);

      【讨论】:

        【解决方案4】:
        $var = '';
        $did = 0;
        for($i=1;$i<=100;$i++){
            $path = '/test' . $i . '.pdf';
            $mess = 'Test message '. substr(md5($i), 0, 10);
            if((i % 10) == 0){
                  $did++;
             }
            $var .= "INSERT INTO `message` (`design_id`, `path`, `message`) VALUES ('$did', '$path', '$mess');"."<br />";
        }
        echo $var;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-02-09
          • 1970-01-01
          • 2016-10-20
          • 1970-01-01
          • 1970-01-01
          • 2017-09-05
          • 1970-01-01
          相关资源
          最近更新 更多