您好我要检查所选数据中的重复数据,但我的代码无法正常工作
我的代码是:
$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++;
}
此代码打印所有未检查重复数据的数据。
答案 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'];
}
}