首页 > 解决方案 > 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,独立于它的长度)

有人可以帮我解释一下吗?谢谢你!

标签: php

解决方案


第一个片段是mysqli_fetch_assoc()每次通过循环调用。每次调用它时,它都会将查询的下一行结果作为数组返回。

当它到达结果的末尾时,它会返回FALSE. 这会导致条件失败,并且循环退出。

你的第二个片段永远循环,因为$test永远不会改变。


推荐阅读