php实现有权重的随机抽取mysql记录
实现思路: 按照权重,划分区间,组成一条线,然后在线上用随机方法选取到点,再由点,返回相应的记录id.具体代码如下: 折叠 展开 PHP Code 复制内容到剪贴板 /*********** @$aFields中只
实现思路:
按照权重,划分区间,组成一条线,然后在线上用随机方法选取到点,再由点,返回相应的记录id.具体代码如下:
折叠展开PHP Code复制内容到剪贴板
- /***********
- @$aFields中只要包含id及权重即可
- 例$aFields['id'] , $aFields['weight']
- creater by xgd
- ************/
- function getidbyweight($aFileds) {
- global $_SGLOBAL;
- $iCount=count($aFileds);
- if($iCount>=2)
- {
- $iLine=0;
- for ($i=0;$i<$iCount;$i++)
- {
- $aFileds[$i]['start']=$iLine+1;
- $iLine +=$aFileds[$i]['weight'];
- $aFileds[$i]['end']=$iLine;
- }
- print_r($aFileds);
- $result=mt_rand(1, $iLine);
- echo $result;
- for ($i=0;$i<$iCount;$i++)
- {
- if($result>=$aFileds[$i]['start'] && $result<=$aFileds[$i]['end'])
- return $aFileds[$i]['id'];
- }
- }
- elseif($iCount==1)
- {
- return $aFileds[0]['id'];
- }
- }
转载请注明出处:http://www.1sohu.com/newsHtm/43/n_16843.shtml
收藏文章
精彩图集
精彩文章