簡體   English   中英

PHP in_array無法正常工作?

[英]PHP in_array not working properly?

我正在研究in_array()方法。 如果讀取的值已在數組中,則應跳過該值並繼續下一個值。 如果當前值不在陣列上,則應將其推入陣列。

這是我的代碼:

while ($Result_Data_2 = mysqli_fetch_array($Result)){ //130 rows from database
      $Res_Array = array();
      $SQL_Result_Time = $Result_Data_2['Interpretation_Time'];

      /* Some statements here */

      if(in_array($SQL_Result_Time, $Res_Array, true)){
          break;
      }
      else{
          array_push($Res_Array, $Number, $SQL_Questionnaire_ID, $SQL_User_ID, $SQL_Psychology_FirstName, $SQL_Psychology_LastName, $SQL_Result_Date, $SQL_Result_Time);
      }
      echo "<pre>";print_r($Res_Array);echo "</pre>";
}

問題:似乎它忽略了我的條件,即if(in_array($SQL_Result_Time, $Res_Array, true)){break; } if(in_array($SQL_Result_Time, $Res_Array, true)){break; }和仍然插入值到陣列。 它仍然重復數據

題:

  1. 如何防止重復數據出現,如果在數組中找到當前值,它將跳過該語句,而轉到另一個值以檢查數組,依此類推?
  2. 我檢查數組值的邏輯正確嗎?

您將在while loop每次迭代中重新初始化數組。 您應該在循環聲明它:

$Res_Array = array();
while ($Result_Data_2 = mysqli_fetch_array($Result)){ //130 rows from database
      $SQL_Result_Time = $Result_Data_2['Interpretation_Time'];

      /* Some statements here */

      if(in_array($SQL_Result_Time, $Res_Array, true)){
          break;
      }
      else{
          array_push($Res_Array, $Number, $SQL_Questionnaire_ID, $SQL_User_ID, $SQL_Psychology_FirstName, $SQL_Psychology_LastName, $SQL_Result_Date, $SQL_Result_Time);
      }
      echo "<pre>";print_r($Res_Array);echo "</pre>";
}

同樣,正如Marvin Fischer在他的回答中提到的那樣,您的break語句將在第一個重復值上終止while loop 您應該改為使用continue

while ($Result_Data_2 = mysqli_fetch_array($Result)){ //130 rows from database
      ...
      if(in_array($SQL_Result_Time, $Res_Array, true)){
          continue;
      }
      ....
}

這個問題應該闡明您在breakcontinue語句中遇到的任何問題

首先,在循環內應使用continue,否則請取消整個循環,其次在每個循環的開頭清空$Res_Array以清除舊數據,插入新數據並再次回顯

暫無
暫無

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

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