簡體   English   中英

在循環中PHP沒有條件?

[英]No condition in PHP while loop?

所以,我正在使用PHP構建我的第一個超級基本CMS。 我不想簡單地復制我正在觀看的教程中的代碼,但我真的很了解它。 困擾我的一件事是使用while循環來獲取帖子。 在下面的代碼中,我無法看到圓括號內的語句如何構成條件。 在我看來它所做的就是為變量$ post分配一個數組。 我想,你怎么能循環不是條件的東西是我的問題。 謝謝!

function get_posts () {
   $query = mysql_query("SELECT * FROM posts") or die(mysql_error());

   while ($post = mysql_fetch_assoc($query)) {
      echo $post['Content'];
   }
}

停!

您正在觀看的教程嚴重過時! 請不要在新代碼中使用mysql_*函數 它們不再被維護,並且已經開始棄用 看到紅色的盒子 了解准備好的語句 ,並使用PDOMySQLi - 本文將幫助您確定哪些。 如果您選擇PDO, 這是一個很好的教程


至於具體問題,這一行

while ($post = mysql_fetch_assoc($query)) {

是條件。 如果有更多結果, mysql_fetch_assoc()返回一個數組,如果沒有結果,則返回false 如果它返回false ,則條件將評估為false並且循環將中斷。

基本上你要獲取新行並將其分配給$post變量:

while ($post = mysql_fetch_assoc($query))

mysql_fetch_assoc

返回值

返回與獲取的行對應的字符串關聯數組,如果沒有其他行,則返回FALSE

因此,當mysql_fetch_assoc返回false它被分配給$post變量,然后在while內進行評估,然后循環停止。

正如mysql_fetch_assoc手冊頁中所述:

返回值:返回與獲取的行對應的字符串關聯數組,如果沒有其他行,則返回FALSE。

while ($post = mysql_fetch_assoc($query))

意味着第一個$ post獲得一個值。 當出現錯誤時,mysql_fetch_assoc返回false。

while循環檢查$ post是否為false,可以為true,整數,數組等。

它是PHP的一部分。 賦值的結果是賦值。 這允許這樣的事情:

$x = $y = $z = 7;

它為所有3個變量分配7 因此,給定

while($row = mysql_result(...)) {

當沒有更多要提取的數據時,mysql_result將返回行數據數組或布爾值false。 該數組/布爾值分配給$ row。 由於這個賦值包含while(),所以array / boolean傳播到while()。

如果你得到一行數據,那么這是一個被while處理為布爾值的數組,並且循環繼續。 如果沒有更多數據,mysql_fetch返回一個布爾值false,它被賦值給$ row,而false也是賦值的結果,這意味着while()得到一個FALSE,並且循環終止。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM