我在PHP之前从未在for循环中见过的代码示例中偶然发现过一种语法。
这是做什么的?我为什么要使用这个?
for(;$i<$max;){
$i++;
//code..
}
我能弄清楚,它是不一样的
for($i=0;$i<$max;$i++) {
//code...
}
我不明白上面两个示例之间的区别。
如果要更具体地说明我的想法。如果我们有此代码(摘自adventofcode的解决方案):https ://www.reddit.com/r/adventofcode/comments/kdf85p/2020_day_15_solutions/
<?php
$cap = 2020;
$bits = [5,1,9,18,13,8,0];
$i=0;
$time = [];
foreach($bits as $bit) {
$i++;
$time[$bit] = $i;
$say = 0;
}
for(;$i<$cap-1;){
$i++;
if(isset($time[$say])) {
$last = $time[$say];
}
else {
$last = $i;
}
$time[$say] = $i;
$say = $i - $last;
}
echo $say;
?>
并将其与:
<?php
$cap = 2020;
$bits = [5,1,9,18,13,8,0];
$i=0;
$time = [];
foreach($bits as $bit) {
$i++;
$time[$bit] = $i;
$say = 0;
}
for($i=0;$i<$cap-1;$i++){
if(isset($time[$say])) {
$last = $time[$say];
}
else {
$last = $i;
}
$time[$say] = $i;
$say = $i - $last;
}
echo $say;
?>
我在$ say。(376 in first example and 38 in last example
)中得到了不同的结果。为什么我得到不同的值?
这两个块之间的主要区别(假设$i
在for(;$i<$max;){
循环之前初始化为0 )是第一个循环$i
在运行循环代码之前递增,而第二个循环$i
在运行循环代码之后递增。作为一个简单的例子:
function code($i) {
echo "$i\n";
}
$max = 3;
$i = 0;
for(;$i<$max;){
$i++;
code($i);
}
for($i=0;$i<$max;$i++) {
code($i);
}
第一个循环的输出是:
1
2
3
而第二个循环的输出是:
0
1
2
注意(如@IMSoP所指出的),condition子句在循环的开头执行,并且可能会有副作用,因此您还可以使用以下代码模拟第一个循环:
for($i=0;$i++<$max;) {
code($i);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句