while循环条件php

时间:2018-02-12 06:05:04

标签: php while-loop

为什么第二个示例与第一个示例的工作方式不同? 看看循环的条件。是不是只有不同的写作条件?

当没有更多内容可用时,第一个例子变为false。然后它停止了。 但是第二个例子永远不会变错,它会不断地在屏幕上显示结果并且永远不会完成。无尽的循环。

为什么示例的行为不同而且不完全相同?

//First ex
while ($rows = mysqli_fetch_assoc($query)) {
print_r($rows);
}



//second ex
$rows = mysqli_fetch_assoc($query);
while ($rows) {
print_r($rows);
}

4 个答案:

答案 0 :(得分:0)

第一个将在每个循环中获取mysql数据。因为条件检查中的语句将运行每个检查。第二个只运行一次。

答案 1 :(得分:0)

第二个while语句在while(condition){}内没有条件,现在你刚刚声明了一个变量。因此它不会以与第一个语句相同的方式执行。

答案 2 :(得分:0)

//First ex
while ($rows = mysqli_fetch_assoc($query)) {
print_r($rows);
}

这是在每次迭代时执行的,因此在每次迭代时将下一个值放在$row内。

//second ex
$rows = mysqli_fetch_assoc($query);
while ($rows) {
print_r($rows);
}

在上面的代码中,您只将第一个迭代值放到$row$row未在每次迭代时获得更新。所以这将永远运行。

结论:

  

每次拨打mysqli_fetch_assoc($query)时,都会给出下一行。

在第一个示例中,$ row在每次迭代时通过在每次迭代时再次调用mysqli_fetch_assoc($query)来获得下一行。

而在第二个示例中,mysqli_fetch_assoc($query)仅被调用一次。因此,每次运行时$row都会有价值,所以它会运行无限时间。

答案 3 :(得分:0)

//mysql users table
//id | nick | date
//1    | x1    | 2018-01-05
//2    | x2    | 2018-01-06
//3    | x3    | 2018-01-07

while ($row = mysqli_fetch_assoc($query)) {
    print_r($row);
}

//first loop call row one
//second loop  call row two
//third loop  call row  three

print_r(mysqli_fetch_assoc($query)); //print row one and mysql cursor jump to row two
print_r(mysqli_fetch_assoc($query)); //print row two and mysql cursor jump to row there
print_r(mysqli_fetch_assoc($query)); //print row there

//but mysqli_fetch_assoc bring one row not rows
$row = mysqli_fetch_assoc($query);


//row is null, no print and repeat
//row is null, no print and repeat
//row is null, no print and repeat
//row is null, no print and repeat
// ∞ :))
while ($row) {
    print_r($row);
}