检查所选数据中的重复数据

时间:2012-11-24 20:44:58

标签: php

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

我的代码是:

$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++;
} 

此代码打印所有未检查重复数据的数据。

3 个答案:

答案 0 :(得分: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'];
    }
}

答案 1 :(得分: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查询吗?

答案 2 :(得分: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'];
    }
}