当前位置: 首页 > 知识库问答 >
问题:

为什么这个循环只执行一次?

夏侯野
2023-03-14

我发现这样的php代码:

$a = 5;
$i  = 4;
for($i = &$a; $i < 10; ++$i);

echo "a=$a, i=$i";

我希望这个循环会执行4次,因为$I变成了对$的引用(对吗?)。然而,循环只执行一次,并输出:

a=10,i=10

我不明白为什么它会这样工作。有什么想法吗?

共有1个答案

欧阳元魁
2023-03-14

它之所以能够工作,是因为for语句的处理方式与分号所产生的单行语句类似。

for($i = &$a; $i < 10; ++$i);

也可以看作

for($i = &$a; $i < 10; ++$i) echo $i;

如果没有花括号,下面的一行将被视为for语句的一部分,您的一行只是一个分号,表示该行的结尾。

正确的代码如下所示。

$a = 5;
for($i = $a; $i < 10; ++$i) echo "a=$a, i=$i";
 类似资料:
  • 我对python中双for循环的使用感到困惑,这是我的代码: 输出如下: 它只对外循环的第一个值执行内循环,为什么会发生这种情况?我怎样才能让它在第一个和第二个变量的所有组合上循环?

  • 下面的程序只需从控制台读取整数并将其打印回来。当输入非int(如char或String)时,扫描仪抛出异常。我试图处理“尝试捕捉”块中的异常,然后继续读取下一个输入。从控制台输入第一个非int输入后,程序运行到无限循环。有人能帮忙吗?

  • 我一直在读一本面向初学者的书,“第一头HTML5编程”,其中有这样一段代码: 目前,如果我调用,它将返回下一次显示是在下午5:00。我将循环条件更改为“I<=movie.showtimes.length;”但它仍然只运行一次,并且只显示下午5点。循环只迭代一次,即使我重写了这个函数: 不是应该跑两次吗?

  • 考虑这个简单的C++函数来计算数组的前缀和: 它是4个融合的UOP1,这个CPU可以支持4个融合的OPs/周期。 有通过和携带的依赖链,每个都是一个循环,但是这些UOP可以到4个ALU端口中的任何一个,所以似乎不太可能冲突。融合的需要转到p6,这是一个更令人担忧的问题,但我只测量到p6的1.1 UOPS/迭代。这将解释每次迭代1.1个循环,但不是1.4个循环。如果我将循环展开2倍,端口压力会低得多

  • } 链接:https://www.hackerrank.com/challenges/java-string-compare/problem

  • 当用户键入以下内容的答案时:system.out.println(“键入数字”); 它不会继续到我的代码的下一部分。