0

您好,我要检查所选数据中的重复数据,但我的代码无法正常工作

我的代码是:

$cs="0";
$location=array();
$check=array(); $check[0]="";
while ($db_field = mysql_fetch_array($result)) {    
     for ($z=0; $z<=$cs;$z++){
        if($check[$z]==$db_field['location']) { 
          //*in here going to check same or not
        } 
        else {                            
          //*if not same $location_c[$cs] will get
          $location_c[$cs]= $db_field['location'];
          $check[$cs]= $db_field['location'];
        }
    }
    $cs++;
} 

此代码打印所有数据而不检查重复数据。

4

3 回答 3

0

我认为您应该使用in_array()以避免重复,我还删除了不必要的东西:

$location=array();
while ($db_field = mysql_fetch_array($result)) {
    if(!in_array($db_field['location'], $location_c)) {
        $location_c[] = $db_field['location'];
    }
}
于 2012-11-24T20:48:44.843 回答
0

假设重复是位置字段

$cs="0";
$location=array();
$check=array(); 
while ($db_field = mysql_fetch_array($result)) {    
     for ($z=0; $z<=$cs;$z++){

        if (in_array($db_field['location'], $check)) continue;
        $check[]=$db_field['location'];

        $location_c[$cs]= $db_field['location'];

    }
    $cs++;
} 

但是您不能避免 SQL 查询重复吗?

于 2012-11-24T20:50:01.273 回答
0

您遇到的第一个问题是在您的 for 声明中:for ($z=0; $z<=$cs;$z++). 没有必要这样做。您应该使用in_array()来确定您要查找的内容是否已设置。此外,您的密钥无需使用增量值。如果使用[]没有开销,并且会自动使用数字键。

最后,似乎根本没有理由使用$check数组。你可以直接去$location_c。这减少了很多代码:

$location_c = array();
while ($db_field = mysql_fetch_array($result)) {
    if(!in_array($db_field['location'],$location_c)){
        $location_c[]= $db_field['location'];
    }
}
于 2012-11-24T20:52:45.147 回答