$sum=5000;//总数 //循环取数据 for($i=1;$i<=20;$i++){ $offset=mt_rand(1,$sum); $sql="s。。e。论坛发不出来。l。e。。c。。t * from __md limit $offset,1"; $randxxx=rand(200,999); //随机数 $re = $db->_query($sql); while ($r = $db->_object($re)) { $result[] = $r; } } 这代码的意思是随机从数据库中取一个值,20次,也就是20个值,每个都不一样,成功了。 但是$randxxx这个随机数为什么20个都一样啊? 我需要$randxxx不一样的。请问大佬应该怎么改呢?本人菜鸟,希望大佬能直接改出代码。 模板里是: {loop $result $v} |
参考官方文档
https://www.php.net/manual/zh/function.srand.php |
baidu是个好东西
复制代码 另外,看起来你不考虑效率,那么可以使用msql的order by rand() |
因为在每次循环 $randxxx都会不新值覆盖 导致在模版里$randxxx是最后一次循环中的随机数 解决方案1、在for外面定义$randxxx数组 每次循环的随机数追加到数组里面 然后在模版里根据下标取值 解决方案2、$randxxx的随机数 放到模版里面 |
是不是可以换个思路: 1、数据表主键ID如果是连续的,先随机20个数字,再一次性去数据库里取; 2、数据表主键ID如果不连续,直接把主键ID取出来,随机20个数,再获取具体数据。 当然,这种方法仅限数据表的数据量不是很大。不过,如果大于 10万+条,limit 效率降低也很大。 不过看你写的 5000,那数据量还好 |