关于zblog主题使用随机的一个小方法
夏蝉 未命名 42阅读
zblog博客已经全面禁止利有rand()函数进行数据库数据的提取,具体可以查看zblog论坛的《关于全面禁止直接在数据库内使用rand()进行随机读取的公告》这个帖子。不让使用rand()原因就是,rand()不支持mysql以外的数据库,在数据库数据比较多的情况下速度会变得很慢。
在给主题做随机模块的时候就采用了一个迂回的方法,来达到一个随机文章的效果。具体方法记录一下,以备后用。

方法原理:
1、先从数据库中提出一部份数据,加入数组中
2、随机抽取数组中的数据,并显示
代码:
function mochu_rand($num){
global $zbp,$str,$order;$i;
$i = $num;
$str = '';
$arr = array();
$arand = array();
$order = array('log_ViewNums'=>'ASC');
$where = array(array('=','log_Status','0'));
$array = $zbp->GetArticleList(array('*'),$where,$order,array(20),'');
$arr = array_rand($array,$i);
for($j=0;$j<$i;$j++)
{
$arand[]=$array[$arr[$j]];
}
foreach ($arand as $related) {
$str .= "<li><a href=\"{$related->Url}\" title=\"{$related->Title}\" target=\"_blank\">{$related->Title}</a></li>";
}
return $str;
}代码中,使用的PHP中的array_rand()函数,用随机获取数组的键名,并不是数据。
代码不是很完美,如果你想使用,还请自己修改一下。
标签:zblog
