[英]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; }
和仍然插入值到陣列。 它仍然重復數據
題:
您將在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;
}
....
}
首先,在循環內應使用continue,否則請取消整個循環,其次在每個循環的開頭清空$Res_Array
以清除舊數據,插入新數據並再次回顯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.