2011-05-04 85 views
2

我現在正在練習php。我有一個問題。single = on while while

我看到一個=在一些while循環。通常在MySQL查詢。那它代表什麼?

兩個==表示相等。但單個=?你能告訴我這背後的邏輯嗎?

回答

3
while ($row = mysql_fetch_row($query)) 
{ 
    //do stuff 
} 

這保持直到一個NULL值(結果結束)被發現查詢結果句柄。 $row然後包含從調用中獲取的行,以便它可以用於處理。

這也是 「速記」 用於檢查一個NULL結果:

while (($row = mysql_fetch_row($query)) != null) 
{ 
    //do stuff 
} 

它還可以取代for循環:

for ($i = 0; $i < mysql_num_rows($query); $i++) 
{ 
    //do stuff 
} 

全部是等價的。

+0

很好地解釋了。非常感謝你。 – jankli 2011-05-04 20:00:30

2

單=是用於分配

$a = 9; 

==是用於比較

if($a == 9) echo 'hello'; 

http://www.w3schools.com/PHP/php_operators.asp

+0

但什麼用,而點循環? – jankli 2011-05-04 19:47:08

+0

它將數據庫結果集中的一行分配給$ row var,它將繼續循環,同時有一行要分配,否則循環將結束。現在在循環內部,您可以使用$ row var來利用行數據,如$ row ['col_1']。 – 2011-05-04 19:50:39

1

這就是分配運算符。

11

單個=的意思是「轉讓」。一個賦值總是賦給一個變量並返回結果。因此,舉例來說:

while($row = mysql_fetch_array($results)) { 
    // ... 
} 

雖然mysql_fetch_array($results)返回一個有效的陣列,它循環。當它返回null(意思是結果結束)循環退出。

+0

但在while循環中使用什麼點? – jankli 2011-05-04 19:51:45

+0

我認爲,如果你解釋作業是表達的一部分,你的答案將會受益,例如, $ row將包含mysl_fetch_array()的結果,同時測試的結果也完全相同。 – hakre 2011-05-04 19:52:50

+0

那麼,你有一個MySQL結果集。'mysql_fetch_array'在該集合中返回* next *結果並返回它,如果沒有更多記錄,則返回'null'。所以'while'循環遍歷所有返回的記錄,每次將每個記錄放入'$ row'中。 – Ryan 2011-05-04 19:53:34

0

雖然'x'的當前值可以成功分配給變量'y',但繼續。

+2

不完全。這更像是'將x分配給y,並測試y是否爲真' – tloach 2011-05-04 19:47:39

0

這裏是一個另類:

$row = mysql_fetch_assoc($thing); 
while (isset($row)) { 

    // do stuff 

    $row = mysql_fetch_assoc($thing); 
} 

你可以看到,這是一個有點打字以下(代碼可能是更有效的)位置:

while (($row = mysql_fetch_assoc($thing)) != null) { 
    // do stuff 
}