这个for循环是什么意思?

世界上最好的程序员

我在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)中得到了不同的结果为什么我得到不同的值?

缺口

这两个块之间的主要区别(假设$ifor(;$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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章