5

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

4 回答 4

24

$i+=10

例子:

for ($i=0; $i<100; $i+=10) {
}
于 2014-01-28T10:11:50.497 回答
7

您可以使用模运算符

$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声明。

于 2012-05-10T13:16:18.350 回答
0

分和地板。

$did = 楼层(i / 10);

于 2012-05-10T13:19:20.720 回答
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;
于 2012-05-10T13:19:45.387 回答