1.通过MYSQL内置的函数来操作,具体SQL代码如下:
创新互联专注于平山企业网站建设,成都响应式网站建设,购物商城网站建设。平山网站建设公司,为平山等地区提供建站服务。全流程按需网站制作,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务
SELECT * FROM tablename ORDER BY RAND() LIMIT 10
2.不要将大量的工作给数据库去做,这样会导致数据库在某一集中并发时间内锁死并阻塞。
建议通过PHP随机生成一下1-X(总行数)之间的数字,然后将这10个随机数字作为查询条件,具体语句如:
SELECT * FROM tablename where ID in (2,8,4,11,12,9,3,1,33)
可能你还要进行重复排除,并且需要在程序中将10个值串联并连接进入SQL语句中。
1,php里面的代码
$arr=array();
for($i=0;$i9;$i++)
{
$a=rand(0,10);
$arr[$i]=$a."\n";
}
$this-assign('arr', $arr);
2,html里面的代码
textarea rows=10
volist name="arr" id="vo"
{$vo|htmlspecialchars_decode}
/volist
/textarea
3,效果图
ps:此处用的是thinkphp里自带的循环,将数组展开的
你给出的数据组织形式,貌似是json,那么你可以直接用json_encode() 和 json_decode()进行转换后,再进行处理。
示例代码:
?php
$json = '{
"6846": {
"userid": "6846",
"expertname": "三剑客",
"firstrate": "0",
"wrong": null,
"firstqs": "2011254",
"firstvalue": "2",
"lastrate": "0",
"firstnum": "0",
"lastnum": "0",
"kjtime": "2012-09-30 00:00:00",
"successrate": "0",
"curqs": " (2012267,2012266,2012262,2012259,2011256,2011255,2011254 )",
"lastpaiming": "1",
"curpaiming": "1"
},
"9205": {
"userid": "9205",
"expertname": "东方诸葛",
"firstrate": "0",
"wrong": null,
"firstqs": "2011254",
"firstvalue": "2",
"lastrate": "0",
"firstnum": "0",
"lastnum": "0",
"kjtime": "2012-09-30 00:00:00",
"successrate": "0",
"curqs": " (2012267,2012266,2012262,2012259,2011256,2011255,2011254 )",
"lastpaiming": "2",
"curpaiming": "2"
},
"9213": {
"userid": "9213",
"expertname": "神探老李",
"firstrate": "0",
"wrong": null,
"firstqs": "2011254",
"firstvalue": "2",
"lastrate": "0",
"firstnum": "0",
"lastnum": "0",
"kjtime": "2012-09-30 00:00:00",
"successrate": "0",
"curqs": " (2012267,2012266,2012262,2012259,2011256,2011255,2011254 )",
"lastpaiming": "3",
"curpaiming": "3"
},
"17518": {
"userid": "17518",
"expertname": "草原雄鹰",
"firstrate": "0",
"wrong": null,
"firstqs": "2011254",
"firstvalue": "2",
"lastrate": "0",
"firstnum": "0",
"lastnum": "0",
"kjtime": "2012-09-30 00:00:00",
"successrate": "0",
"curqs": " (2012267,2012266,2012262,2012259,2011256,2011255,2011254 )",
"lastpaiming": "4",
"curpaiming": "4"
}
}';
echo 'Pre';
print_r( json_decode($json,true) );
echo '/pre';
?
mysql:SELECT * FROM table order by rand() limit 10;
从数据库随机取出来之后再用php处理一下,按照你的需求再排序咯。然后楼主还有什么疑问的话,还不懂,可以去后盾人看看,里面有些资料,兴许能够帮助你
array_rand()
在你想从数组中取出一个或多个随机的单元时相当有用。它接受
input
作为输入数组和一个可选的参数
num_req,指明了你想取出多少个单元
-
如果没有指定,默认为
1。
如果你只取出一个,array_rand()
返回一个随机单元的键名,否则就返回一个包含随机键名的数组。这样你就可以随机从数组中取出键名和值。
主要是用array_rand()方法
直接使用while循环来处理,循环使用随机函数mt_rand,将随机数存入一个数组中,作为判断数据是否重复的依据(in_array);使用glob函数来判断new目录下的文章篇数,作为生成随机数的最大值;整体代码如下:
执行后的效果:
代码操作:
?php
//获取文件夹下html的数量
$max_num = glob("xxx/new/*.html");
$num = 0;
$rand_num = [];
$result_arr = [];
while($num 100){
$tample_num = mt_rand(1,$max_num);
if(!in_array($tample_num,$rand_num)){
$rand_num[] = $tample_num;
$result_arr[] = "".$tample_num.".html";
$num++;
}
}
foreach($result_arr as $v){
echo $v."hr/";
}
echo "数组的大小". count($result_arr);