求一php函数,实现从m个数中选出n个数

xiayong404 2009-09-04 04:38:00
小弟要做一考试系统,要从试题表exam_stb中,随机出n道试题(不能重复),求一函数能实现
如:function f($m,$n){
...
}
$m=array("1","3","2","8");
$n=3;
$t=f($m,$n);

希望$t 为array("1","2","3")或 array("1","2","8") 等等

望哪位大哥能帮帮小弟啥。
...全文
182 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiayong404 2009-09-04
  • 打赏
  • 举报
回复
感谢大家的回复,小弟我受益匪浅。。
codeyell-com 2009-09-04
  • 打赏
  • 举报
回复
array array_slice ( array array, int offset [, int length [, bool preserve_keys]] )


array_slice() 返回根据 offset 和 length 参数所指定的 array 数组中的一段序列。


[Quote=引用 2 楼 foolbirdflyfirst 的回复:]
每次只返回一组组合就行了?
PHP code$m=array("1","3","2","8");$n=3;$t=f($m,$n);function f($m,$n)
{if($n>count($m))return$m;else
{shuffle($m);returnarray_slice($m,0,$n);
}
}print_r($t);
[/Quote]
codeyell-com 2009-09-04
  • 打赏
  • 举报
回复
array_rand() 在你想从数组中取出一个或多个随机的单元时相当有用。它接受 input 作为输入数组和一个可选的参数 num_req,指明了你想取出多少个单元 - 如果没有指定,默认为 1。

如果你只取出一个,array_rand() 返回一个随机单元的键名,否则就返回一个包含随机键名的数组。这样你就可以随机从数组中取出键名和值。

foolbirdflyfirst 2009-09-04
  • 打赏
  • 举报
回复
每次只返回一组组合就行了?
$m=array("1","3","2","8");
$n=3;
$t=f($m,$n);
function f($m,$n)
{
if($n > count($m)) return $m;
else
{
shuffle($m);
return array_slice($m,0,$n);
}
}
print_r($t);
Fufay 2009-09-04
  • 打赏
  • 举报
回复
试题表如果不大,可以直接 orderby rand() limit 10之类的。
如果表记录数很大,那么建议查处最小ID和最大ID,随机挑选出N个ID,然后用 in(...)查询,当然,有断记录可以再做判断。

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧