1 回答
TA贡献1765条经验 获得超5个赞
PHP 赋值行为的一个特点是它还返回赋值的结果。这允许以下语句:
$a = $b = $c = 3; // All of a, b and c will equal 3
和:
while ($variable = call_a_function()) {
do_something_with($variable);
}
在后一个示例中,在循环迭代开始时将其variable分配给输出;call_a_function()一旦call_a_function()返回一个计算结果为 的值,false循环就结束。如果返回的值不计算为false,variable则将包含返回的任何值,直到它再次被覆盖。
您的示例使用类似的行为。之间的关键区别
$var1=mysqli_fetch_array($query);
while($var2=$var1)
{
echo $var2[$key];
}
和:
while($var1=mysqli_fetch_array($query))
{
echo $var1[$key];
}
...是在第一个示例中,$var1仅分配给循环开始mysqli_fetch_array($query) 之前的返回值,而在第二个示例中,$var1分配给循环的每次迭代中的mysqli_fetch_array($query)返回值。
最终,使这两段代码产生重大差异的原因在于,mysqli_fetch_array($query)它们会根据情况返回不同的结果。
将代码片段组合成一个按预期工作但使用 $var2 的示例,产生:
while($var2=$var1=mysqli_fetch_array($query))
{
echo $var2[$key];
}
或者
$var1=mysqli_fetch_array($query); // ask first time
while($var2=$var1)
{
echo $var2[$key];
$var1=mysqli_fetch_array($query); // ask again, because the answer changed
}
TL;DR:第一个例子问一个问题一次,第二个例子问一个问题很多次。在这种情况下,代码的预期行为需要多次询问问题,因为答案会随着时间而变化。
- 1 回答
- 0 关注
- 79 浏览
添加回答
举报