2014-01-18 139 views
0

這似乎是一個非常愚蠢的問題,但沒有對服務器做任何更改.. PHP中的繼續功能似乎開始工作不正確。PHP「繼續」停止foreach循環

例如:

function contTest(){ 
    $testers = array(1, 3, 4, 5); 
    foreach($testers as $test){ 
     echo "Got here<br>"; 
     continue; 
     echo $test."<br>"; 
    } 
} 

輸出:

Got here 
Got here 
Got here 
Got here 

鑑於:

function contTest(){ 
    $testers = array(1, 3, 4, 5); 
    foreach($testers as $test){ 
     echo "Got here<br>"; 
     echo $test."<br>"; 
    } 
} 

OUPUTS:

Got here 
1 
Got here 
3 
Got here 
4 
Got here 
5 

我以前使用過這個功能,它似乎沒有這個效果。有任何想法嗎?就像我說的,服務器上沒有任何變化,所以PHP版本是一樣的。

+3

代碼正常工作。你需要什麼? – voodoo417

+1

繼續工作它應該如何http://uk3.php.net/manual/en/control-structures.continue.php – TommyBs

+0

據我所知,'繼續'的功能是繞過代碼的其餘部分在代碼塊內並開始循環的下一次迭代。所以它似乎在做它的工作。 – MrVimes

回答

13

我不知道你想要什麼效果,但這個例子工作正常。 continue需要打破當前的迭代並轉到下一個,而不在該運算符下執行代碼。而且這個函數在PHP4以來一直在這種情況下工作。

6

我想你需要了解繼續如何工作。我想補充一些,所以如果其他身體也面臨相同的情況,可能會將此作爲參考。

您需要使用關鍵字繼續如果您想忽略下一次循環迭代。 continue is always used with if condition

根據這裏的例子。

function contTest(){ 
    $testers = array(1, 3, 4, 5); 
    foreach($testers as $test){ 
     echo "Got here<br>"; 
     **continue;** 
     echo $test."<br>"; 
    } 
} 

這個按預期和完美工作,這是爲什麼。 你正在循環數組$ testters裏面有四個元素和 獲取每個元素後,你告訴php忽略元素使用 繼續這就是爲什麼它不會輸出數組元素 $測試人員。

讓我試着在這裏重寫您的示例。

function contTest(){ 
    $testers = array(1, 3, 4, 5); 
    foreach($testers as $test){ 
     echo "Got here<br>"; 
     if ($test == 1): 
     continue; 
     endif; 
     echo $test."<br>"; 
    } 
} 

echo contTest(); 

我剛使用continue如果元素等於1,這意味着元件將是 跳過(忽略)。 輸出結果如下:

Got here 
Got here 
3 
Got here 
4 
Got here 
5 

正如你所看到的1被忽略。