【问题标题】:While loop condition strange behavior php虽然循环条件奇怪的行为php
【发布时间】:2021-11-13 09:34:54
【问题描述】:

有人可以解释第一个循环和第二个循环有什么区别,为什么第一个工作正常而第二个忽略条件? 我唯一改变的是,我不是直接在 $i 变量上提高值,而是通过 $q 变量提高(注意第二个循环是无限的)

$i = 0;
while ($i < 10) {
    $i++;
}
$i = 0;
$q =  $i;
while ($q < 10) {
    $i++;
}

【问题讨论】:

  • 当您执行$q = $i 时,您只是在分配值。它不是参考,所以如果你在循环中回显$q,你会看到它永远不会改变。
  • 有什么区别?
  • 它们是不同的变量,为什么你认为在第二个代码中改变$i会更新$j
  • 您能否详细说明一下,在我看来,第一个会改变第二个,第二个会相应地影响其他事情在我看来是合乎逻辑的
  • 不确定您要对该评论说什么,在第二个代码中,$q 将保持为 0,您可以在循环中看到 $i 将更改。这两个变量之间的唯一联系是您在循环之前设置$q = $i,这就是发生的一切。

标签: php while-loop


【解决方案1】:
$i = 0;
$q = $i;

// $q is now equals to $i, but it is not
// a reference, it only has the value of $i
// at this specific moment.

while ($q < 10) {
    // $i == 0
    // $q == 0

    $i++;

    // $i == 1
    // $q == 0
}

$q 将永远为 0,因为您不递增它,因此 $q &lt; 10 始终为 true

但是在你的第一个循环中:

$i = 0;
while ($i < 10) {
    // $i == 0
    $i++;
    // $i == 1
}

在第十次迭代中,$i &lt; 10 变为 false 并且循环停止。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 2017-12-12
    • 1970-01-01
    • 2023-03-14
    相关资源
    最近更新 更多