我正在构建一个虚拟数据的长查询.我有一个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;
Run Code Online (Sandbox Code Playgroud)
您可以使用模数运算符:
$did = 0;
for($i=0;$i<100;$i++){
$did += $i % 10 == 9;
}
Run Code Online (Sandbox Code Playgroud)
表达式$i % 10从0开始,增加到9(10 - 1)然后无限期地"包裹".$did每次评估为9时都会增加,即每10次迭代.
有趣的是,你可以使用范围[0,9]中的任何值进行比较,它仍然会$did以相同的速率增加; 不同之处在于第一次增加会发生.通过选择9次增加发生在10日,20日等迭代.如果您选择0,则会在1日,11日,21日等处发生增加.
最后,如果这项技术是新的,那么使用额外的parens可能会感觉更舒服
$did += ($i % 10 == 9);
Run Code Online (Sandbox Code Playgroud)
甚至是一个独立的if声明.