ThinkPHP框架,按分類,計算商品價格區間,來完成價格搜索
阿新 • • 發佈:2017-07-07
_id pricedata explode eid blog class light price think
//取出分類下的篩選屬性 $cateId=I(‘get.cid‘); /********計算這個分類下商品的七個價格區間的範圍******/ $goodsModel = D("Goods"); $goodsPriceData=$goodsModel->field(‘MIN(shop_price) minprice,MAX(shop_price) maxprice,GROUP_CONCAT(shop_price) as priceStr‘) ->where(array( ‘cat_id‘=>array(‘eq‘,$cateId), ‘is_delete‘=>array(‘eq‘,0), ‘is_on_sale‘=>array(‘eq‘,1), ))->find(); //算法:計算商品價格的七個區間 $priceNumber=7; $sprice=ceil(($goodsPriceData[‘maxprice‘]-$goodsPriceData[‘minprice‘])/$priceNumber); $firsetPrice = $goodsPriceData[‘minprice‘]; //接收七個區間的價格範圍 $_priceNumber=array(); for($i=0;$i<$priceNumber;$i++){ if($i<($priceNumber-1)) $_priceNumber[]=(floor($firsetPrice/10)*10).‘-‘.(floor(($firsetPrice+$sprice)/10)*10-1); else $_priceNumber[]=(floor($firsetPrice/10)*10).‘-‘. ceil($goodsPriceData[‘maxprice‘]/10)*10; $firsetPrice+=$sprice; } //把從商品中取出來的價格字符串轉化成數組後, $goodsPrice=explode(‘,‘,$goodsPriceData[‘priceStr‘]); sort($goodsPrice); //在價格區間中做比對,如果區間中有商品保存價格區間,否則刪除 foreach($_priceNumber as $k => $v){ $a = explode(‘-‘, $v); $start=$a[0]; $end =$a[1]; $panduan=array(); foreach($goodsPrice as $k1 => $v1){ $v1=floor($v1); //價格在此區間,把該價格保存在數組中 if($v1>=$start && $v1<=$end) $panduan[]=$v1; } //如果取出的商品沒有在此價格區間的,刪除該區間範圍 if(empty($panduan)) unset($_priceNumber[$k]); }
ThinkPHP框架,按分類,計算商品價格區間,來完成價格搜索