php从数据库取值后做成一个数组类型的随机数

从数据库取值以后,大约是30条信息,每次循环显示7条信息,但这7条信息是随机的,固定的值只有总数的30条,30条信息大约是30个数组,我要把数组作为随机数,因为数组里面有... 从数据库取值以后,大约是30条信息,每次循环显示7条信息,但这7条信息是随机的,固定的值只有总数的30条,30条信息大约是30个数组,我要把数组作为随机数,因为数组里面有3个值,我是需要用于显示的,没有开发过这个,用了几个PHP的数组操作的函数,只能提取一维数组某个值作为随机数 展开
 我来答
易寄波Re
2013-06-10 · TA获得超过404个赞
知道答主
回答量:59
采纳率:0%
帮助的人:88.2万
展开全部

从你的表述,我的分析是:你的数据库有30条左右的数据行,每次全部都查出来(需要一个二维数组,这样便于管理),每一行数据有3个字段,你需要的结果是,当页面刷新的时候,每次随即显示7条数据。代码如下:

<?php
// 连接数据库
$link = mysql_connect('主机名', '用户名', '密码');
// SQL查询语句,条件WHERE如果没有可以不加,不需要LIMIT,全部查出来
$sql = "SELECT `字段1`, `字段2`, `字段3` FROM `表名` WHERE `条件`;";
// 执行SQL语句,获取查询结果集
$result = mysql_query($sql, $link);
// 循环遍历结果集 用意是为了构建二维数组,不懂不要紧用了就明白,双!!号是为了将while循环中表达式的值强制转换成布尔值,便于判断,可以不加,我习惯加上
while (!!$assoc = mysql_fetch_assoc($result)) {//以关联数组的方式解析结果集
    $data[] = $assoc; // 将解析的结果放入数组中,创建一个二维数组
}
// 初始化一个数组,下面要用到,是用来存放随即7个数组的下标的
$keys = array();
// 写一个自定义函数,需要用到递归算法
function get_key($keys, $data) {
   // 这里用到了一个随即数字函数mt_rand()而不是rand(),因为前者是后者的加强版,个人比较喜欢前者,当然用后者在这里也是完全可以的,根据自己的喜好来定
   if (!in_array($key = mt_rand(0, count($data) - 1), $keys)) {
       // 说明没有重复,接收
       return $key;
   } else { // 说明重复继续递归
       return get_key($keys, $data);
   } 
}
// 使用for循环随即读取数据中的7条数据,当然用foreach也可以,根据自己的喜好来定
for ($i = 0; $i < 7; $i ++) {// 这里比较复杂的就是需要7条不同的数据,不能相同
   // 获取不同的7条数据的下标
   $keys[] = get_key($keys, $data);
}
// 7个不同数据的下标有了,接下来就是遍历数据了,用foreach
foreach ($keys as $key) {
    echo '字段1:' . $data[$key]['字段1'];
    echo '<p />';
    echo '字段2:' . $data[$key]['字段2'];
    echo '<p />';
    echo '字段3:' . $data[$key]['字段3'];
    echo '<p />';
}
// 问题解决,这只是一种解决方案,当然还有其他很多种,最后记得关闭数据库和销毁结果集
mysql_free_result($reuslt); // 销毁结果集
mysql_close($link)// 关闭数据库
// 销毁变量
unset($result);
unset($link);
?>

希望我的方案,能够帮你解决问题,如果还有任何问题或疑惑欢迎追问~

记住一座城
2013-06-08 · TA获得超过728个赞
知道小有建树答主
回答量:1091
采纳率:33%
帮助的人:662万
展开全部
如果数据库用的是mysql,直接用rand()函数随机取出几条数据即可。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式