[英]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.