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 に答える