龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

php实现有权重的随机抽取mysql记录

时间:2011-08-23 15:32来源:未知 作者:admin 点击:
分享到:
实现思路: 按照权重,划分区间,组成一条线,然后在线上用随机方法选取到点,再由点,返回相应的记录id.具体代码如下: 折叠 展开 PHP Code 复制内容到剪贴板 /*********** @$aFields中只

实现思路:
按照权重,划分区间,组成一条线,然后在线上用随机方法选取到点,再由点,返回相应的记录id.具体代码如下:

 

折叠PHP Code复制内容到剪贴板
  1. /***********  
  2. @$aFields中只要包含id及权重即可  
  3. 例$aFields['id'] , $aFields['weight']    
  4. creater by xgd  
  5. ************/  
  6. function getidbyweight($aFileds) {   
  7.     global $_SGLOBAL;   
  8.     $iCount=count($aFileds);   
  9.     if($iCount>=2)   
  10.     {   
  11.         $iLine=0;   
  12.         for ($i=0;$i<$iCount;$i++)   
  13.         {   
  14.             $aFileds[$i]['start']=$iLine+1;   
  15.             $iLine +=$aFileds[$i]['weight'];   
  16.             $aFileds[$i]['end']=$iLine;            
  17.         }   
  18.         print_r($aFileds);   
  19.         $result=mt_rand(1, $iLine);   
  20.         echo $result;   
  21.         for ($i=0;$i<$iCount;$i++)   
  22.         {   
  23.             if($result>=$aFileds[$i]['start'] && $result<=$aFileds[$i]['end'])             
  24.                 return $aFileds[$i]['id'];   
  25.                
  26.         }      
  27.     }   
  28.     elseif($iCount==1)   
  29.     {   
  30.         return $aFileds[0]['id'];   
  31.     }   
  32.        
  33. }  

 

转载请注明出处:http://www.1sohu.com/newsHtm/43/n_16843.shtml

 

 


精彩图集

赞助商链接