首页 > 解决方案 > 虽然循环条件奇怪的行为php

问题描述

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

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

标签: phpwhile-loop

解决方案


$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 < 10总是true.

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

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

在第十次迭代时,$i < 10变为false并且循环停止。


推荐阅读