$total=0;
// 设置所有条件进行精确搜寻
sql="select 名称, 8位ID, 图片路径, 库存数量, 存货地点 from DBinv where 款式=男装 and 尺码=XL and 颜色=5 and 有无现货=1";
$result = mysql_query($sql);
while ( $reco = mysql_fetch_array($result) ) {
$sendback[$total]=array($reco[0],$reco[1],$reco[2],$reco[3],$reco[4]);
$total++;
}// 得出第一次精确搜寻后,再来一次忽略颜色的搜寻
sql="select 名称, 8位ID, 图片路径, 库存数量, 存货地点 from DBinv where 款式=男装 and 尺码=XL and 有无现货=1";
$result = mysql_query($sql);
while ( $reco = mysql_fetch_array($result) ) {
$sendback[$total]=array($reco[0],$reco[1],$reco[2],$reco[3],$reco[4]);
$total++;
}print_r($sendback);由于第二次搜寻的条件不比第一次的精确,所以第一次搜寻到的都必定会在第二次搜寻时重覆,
现时只成功使用回圈来比较数据,由于不想走弯路,由其当搜寻数据是大量的情况下,那弯路好吓人
我已分别试过 array_unique, array_merge, array_diff 但都没成功,
请问有什么直接方法,能除去重覆得出的数据?而且搜寻出来的次序先后不变(精确的排先,第二次的排后)

解决方案 »

  1.   

    sql="select 名称, 8位ID, 图片路径, 库存数量, 存货地点 from DBinv where 款式=男装 and 尺码=XL and 有无现货=1 and 颜色 !=5 "; 
      

  2.   

    1、采用1楼的做法在‘忽略颜色的搜寻’时使用条件排除2、其实最简单的做法是排序,只需要查询一次
    sql="select 名称, 8位ID, 图片路径, 库存数量, 存货地点 from DBinv where 款式=男装 and 尺码=XL and 有无现货=1 order by 颜色=5 desc"; 
    $result = mysql_query($sql); 
    while ( $reco = mysql_fetch_array($result) ) { 
    $sendback[$total]=array($reco[0],$reco[1],$reco[2],$reco[3],$reco[4]); 
    $total++; 
    } 3、按照你原有的思路,可以这样做
    $st = array();
    sql="select 名称, 8位ID, 图片路径, 库存数量, 存货地点 from DBinv where 款式=男装 and 尺码=XL and 颜色=5 and 有无现货=1"; 
    $result = mysql_query($sql); 
    while ( $reco = mysql_fetch_array($result) ) { 
    $sendback[$total]=array($reco[0],$reco[1],$reco[2],$reco[3],$reco[4]); 
    $st[] = $reco[1];
    $total++; 
    } // 得出第一次精确搜寻后,再来一次忽略颜色的搜寻 
    sql="select 名称, 8位ID, 图片路径, 库存数量, 存货地点 from DBinv where 款式=男装 and 尺码=XL and 有无现货=1"; 
    $result = mysql_query($sql); 
    while ( $reco = mysql_fetch_array($result) ) { 
    if(! in_array($reco[1], $st)) {
      $sendback[$total]=array($reco[0],$reco[1],$reco[2],$reco[3],$reco[4]); 
      $total++; 
    }