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 關注
- 100 瀏覽
添加回答
舉報