php - 虽然循环条件奇怪的行为php
问题描述
有人可以解释第一个循环和第二个循环有什么区别,为什么第一个循环正常,第二个忽略条件?我唯一改变的是,我不是直接在 $i 变量上提高值,而是通过 $q 变量提高(注意第二个循环是无限的)
$i = 0;
while ($i < 10) {
$i++;
}
$i = 0;
$q = $i;
while ($q < 10) {
$i++;
}
解决方案
$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
并且循环停止。
推荐阅读
- shell - 如何在ansible中为运行命令添加密码
- python - 在 pandas 数据框中提取列列表包含某些值的行
- c# - Net Core 类的 JetBrains Rider 元数据
- php - 如何使用 Laravel Ajax 在表中保存具有用户身份验证 ID 的数据
- c# - 如何仅打印最后一个文件夹的数组名称
- javascript - 使用单个导出扩展导出多个 Qlik sense 对象
- c++ - 在不同的线程中执行每个 QTModbus 响应
- python - 无法使用 warnings.filterwarnings("ignore") 抑制 Python 警告
- authentication - 身份服务器 4 外部登录在 Firefox 中不起作用,但在 Chrome 中起作用
- node.js - 访问 Hyperldger 资源管理器时出错“无法获取 /”