2015-09-02 79 views
1

我正在使用PHP中的for循環,該循環不能按預期工作。循環使用自己的驗證腳本向頁面輸出一個表單。但是,一旦運行,循環永遠不會結束!PHP - 循環不像預期的那樣運行

for ($noemployments=0; $noemployments < 3; $noemployments++) { 
    if ($noemployments >=9) { 
     break 2; 
    } 

    $noemploymentsErr.$noemployments=""; 

    if ($_SERVER['REQUEST_METHOD'] == "POST") { 
     if (empty($_POST['no_empreturns".$noemployments"'])) { 
      $noemploymentsErr.$noemployments = "This is a required field."; 
     } else { 
      $no_empreturns.$noemployments = test_input($_POST['no_empreturns".$noemployments"']); 
      if (!preg_match("/^[a-zA-Z0-9_-]*$/", $no_empreturns.$noemployments)) { 
       $noemploymentsErr.$noemployments = "Illegal characters have been entered."; 
      } 
     } 
    } 

    print "<label for='no_returns'>Employment Name".$noemployments.":</label> 
     <input type='text' id='no_returns' class='form-control' name='no_empreturns".$noemployments."' placeholder='Employment name' maxlength='20'>"; 
    print "<strong>".$noemploymentsErr.$noemployments."</strong>"; 

} 

有什麼建議嗎?

+0

在此行中:'$ noemploymentsErr。$ noemployments =「」;'你實際上設置了'$ noemployments =「」',然後在調用++時進行循環交互 - 它被轉換爲數字(0)和+1, 1.因此,您實際上在每次迭代時重置循環變量,導致循環永不停止運行。 – uri2x

回答

1
$noemploymentsErr.$noemployments=""; 

不會做你的想法。它每次通過循環設置$noemployments爲空字符串,計算結果爲00 < 3。所以循環永遠不會結束。

更好的辦法是使用一個數組:

$noemploymentsErr[$noemployments] = ""; 

但是,如果你不使用這個以後再沒有必要保留單獨的錯誤,只是:

$noemploymentsErr = ""; 
相關問題