簡體   English   中英

如何使用PHP在嵌套的if-else條件下繼續進行外部while循環?

[英]How to continue the outer while loop in a nested if-else condition with PHP?

我有一段代碼如下:

while ( $conver = mysqli_fetch_assoc($converQ)) // for each conversation
{
    $group_mark = array();

    if ($conver['send_from'] == 1)  // send from group
    {  
        if (in_array($conver['sender_id'], $group_mark)) 
        {
            continue;
        }
        else
        {
            array_push($group_mark, $conver['sender_id']);
        }
     ...

while-loop的開始,我必須檢查對話是來自組還是來自個人。 如果來自組,則應檢查id是否已出現。 但是現在, continue無法停止在while-loop執行以下代碼並開始下一個循環。 我認為原因是它的外部函數是if-else而不是while-loop 您能告訴我如何編輯代碼以完成我想要的嗎? 先感謝您!

編輯:

我已經嘗試過了: continue 2但是不起作用。 為什么?

感謝@ThinkingMedia,我知道現在出了什么問題。 我將$group_mark放在錯誤的位置。 抱歉。

在這些情況下,您想停止檢查其他行,則可以開發一個函數並在所需的位置按真返回:

function check()
{
    while ( $conver = mysqli_fetch_assoc($converQ)) // for each conversation
    {
     $group_mark = array();

     if ($conver['send_from'] == 1)  // send from group
     {  
         if (in_array($conver['sender_id'], $group_mark)) 
         {
            return true;
         }
         else
         {
             array_push($group_mark, $conver['sender_id']);
         }
     }
   }
 }

您的代碼是正確的。 但是continue不會跳過那些if/else語句。

在php docs中,他們說已棄用: continue {var}

5.4.0刪除了將變量(例如$ num = 2;繼續$ num;)作為數值參數傳遞的功能。

您可以按以下方式修改代碼:

while ( $conver = mysqli_fetch_assoc($converQ)) // for each conversation
{
    $group_mark = array();

    if ($conver['send_from'] == 1)  // send from group
    {  
        if (!in_array($conver['sender_id'], $group_mark)) {
            array_push($group_mark, $conver['sender_id']);
        }
    }
    ...
}

發現了一些有趣的信息,好奇為什么$ group_mark = array(); 在while循環中。 由於group_mark始終為空數組,因此似乎將被覆蓋並且無法滿足if條件。

嘗試將其移動到while循環之前。 這應該解決並得到您所需要的。

暫無
暫無

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

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