You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中While循环条件的异常行为咨询:两段循环代码的差异及死循环原因解析

PHP两段While循环的差异解析:为何一个正常结束,一个无限循环?

咱们来唠唠这两段PHP循环代码的区别,为啥一个能正常跑完,另一个却死循环停不下来?其实根源就在变量赋值的小细节里!

对比代码展示

第一段(可正常结束的循环)

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

第二段(陷入无限循环的代码)

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

核心原因拆解

  • 第一段代码的逻辑很直接:循环的判断条件是基于变量$i本身,每次循环里执行$i++都会让$i的数值不断递增,当$i达到10时,$i < 10的条件不成立,循环就会正常终止。

  • 第二段代码的问题出在$q = $i这一步:在PHP中,整数这类基础数据类型的赋值是值传递,简单说就是$q只是复制了$i当时的数值(也就是0),之后$i不管怎么自增,都和$q没有半毛钱关系。而循环的判断条件是$q < 10,但整个循环过程中$q的值始终是0,永远满足小于10的条件,可不就陷入无限循环了嘛!

如果想让第二段代码和第一段有一样的效果,你需要把$q改成$i的引用,也就是写成$q = &$i;(注意这里的&符号),这样$q就会和$i指向同一个内存地址,$i自增的时候$q的值也会跟着同步变化,循环就能正常结束了。

内容的提问来源于stack exchange,提问作者dvd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 12:42:29