每10次循环迭代增加int var

时间:2012-05-10 13:14:15

标签: php

我正在构建虚拟数据的长查询。我有一个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;

4 个答案:

答案 0 :(得分:16)

$ I + = 10

示例:

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

答案 1 :(得分:6)

您可以使用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日等。

最后,如果这项技术是新的,那么使用额外的parens可能会感觉更舒服,例如

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

甚至是独立的if声明。

答案 2 :(得分:0)

分而为之。

$ did = floor(i / 10);

答案 3 :(得分:0)

$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;