php - PHP WHILE 语句遍历数组长度
问题描述
我通过观看一些购物车教程学习了一些 oop,并且我发现两种不同的行为超过了我认为是同一件事,我不明白为什么:1-while stamennt 应该在条件为 TRUE 时迭代,但我看到代码只相应地迭代到作为参数提供的数组的长度(这对我来说没有意义,但确实如此):这是示例:
while ($row = mysqli_fetch_assoc($result)){
echo '<pre>'; print_r($row); echo '</pre>';
// component($row['product_name'], $row['product_price'], $row['product_image'], $row['id']);
}
在上述情况下,它只迭代 4 次,因为这是数组的长度。
但后来我试图复制它来检查它
<?php
$test = ["nro1" =>1 , "nro2" => 2];
while ($test){
print_r($test);
}
并且它永远迭代,(这是有道理的,因为数组总是 TRUE,独立于它的长度)
有人可以帮我解释一下吗?谢谢你!
解决方案
第一个片段是mysqli_fetch_assoc()
每次通过循环调用。每次调用它时,它都会将查询的下一行结果作为数组返回。
当它到达结果的末尾时,它会返回FALSE
. 这会导致条件失败,并且循环退出。
你的第二个片段永远循环,因为$test
永远不会改变。
推荐阅读
- c++ - 使用多个文件对函数的未定义引用
- assembly - 如何使绘图程序在 200x320 像素(而不是 200x255)组件上工作?
- reactjs - react-hook-form isDirty 对我来说似乎很奇怪
- sql-server - 聚类索引新基数算子灾难性估计
- c++ - 使用 bash 连接到 unix-socket
- image - Flutter 图像保存在 iOS 中变得模糊
- javascript - 与 Chorme 相比,为什么在 Firefox 上运行地理定位时会给出更准确的结果
- angularjs - 简单的 AngularJS 路由示例不起作用
- angular - Angular - 渲染后如何执行代码
- google-chrome - Chromium 调试构建没有 TCMalloc 符号