繁体   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