PHP函数shuffle()取数组若干个随机元素的方法分析


Posted in PHP onApril 02, 2016

本文实例讲述了PHP函数shuffle()取数组若干个随机元素的方法。分享给大家供大家参考,具体如下:

有时候我们需要取数组中若干个随机元素(比如做随机推荐功能),那么PHP要如何实现呢?一个比较简单的解决方法是用PHP自带的shuffle()函数。下面举一个简单的例子:

$data[] = array(
    "name" => "三水点靠木",
    "rank" => "40"
);
$data[] = array(
    "name" => "博客园",
    "rank" => "50"
);
$data[] = array(
    "name" => "CSDN",
    "rank" => "60"
);
$data[] = array(
    "name" => "ITEYE",
    "rank" => "50"
);
shuffle($data);
$i = 0;
foreach($data as $key =>$value ){
    if($i < 2) {
        echo $data[$key]['name'].'<br />';
    }
    $i++;
}

shuffle()

shuffle() 函数把数组中的元素按随机顺序重新排列。若成功,则返回 TRUE,否则返回 FALSE。本函数为数组中的单元赋予新的键名,这将删除原有的键名而不仅是重新排序。

如果传入的是关联数组,你会发现关联数组的键名将丢失。顺便这里说一下解决方法:

// 打乱关联数组的排序
function shuffle_assoc($array)
{ 
  $randomized_keys = array_rand($array, count($array)); 
  foreach($randomized_keys as $current_key)
  { 
    $output[$current_key] = $array[$current_key]; 
  } 
  return $output;
}

另外,php还提供了从数组中随机抽取值的函数:array_rand(),其调用格式如下:array_rand(数组,抽取元素的个数); 当然要实现对二维数组的支持还需要封装一下才能使用。但前面的程序就很好支持二维数组。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP 截取字符串 分别适合GB2312和UTF8编码情况
Feb 12 PHP
PHPMyadmin 配置文件详解(配置)
Dec 03 PHP
PHP学习之输出字符串(echo,print,printf,print_r和var_dump)
Apr 17 PHP
两级联动select刷新后其值保持不变的实现方法
Jan 27 PHP
PHP函数in_array()使用详解
Aug 20 PHP
set_exception_handler函数在ThinkPHP中的用法
Oct 31 PHP
PHP实现CSV文件的导入和导出类
Mar 24 PHP
PHP异常处理Exception类
Dec 11 PHP
PHP的swoole扩展安装方法详细教程
May 18 PHP
理清PHP在Linxu下执行时的文件权限方法
Jun 07 PHP
php微信公众号开发之校园图书馆
Oct 20 PHP
Laravel 自定命令以及生成文件的例子
Oct 23 PHP
PHP函数import_request_variables()用法分析
Apr 02 #PHP
PHP数组函数array_multisort()用法实例分析
Apr 02 #PHP
PHP使用http_build_query()构造URL字符串的方法
Apr 02 #PHP
PHP递归实现层级树状展开
Apr 01 #PHP
详解PHP的Yii框架中扩展的安装与使用
Apr 01 #PHP
PHP使用SOAP扩展实现WebService的方法
Apr 01 #PHP
PHP全局变量与超级全局变量区别分析
Apr 01 #PHP
You might like
使用sockets:从新闻组中获取文章(二)
2006/10/09 PHP
PHP中的gzcompress、gzdeflate、gzencode函数详解
2014/07/29 PHP
php实现比较两个字符串日期大小的方法
2015/05/12 PHP
magento后台无法登录解决办法的两种方法
2016/12/09 PHP
yii2.0整合阿里云oss的示例代码
2017/09/19 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
2018/01/16 PHP
解决 FireFox 下[使用event很麻烦] 的问题.
2006/08/22 Javascript
jQuery生成asp.net服务器控件的代码
2010/02/04 Javascript
深入了解JavaScript中的Symbol的使用方法
2015/07/28 Javascript
基于javascript数组实现图片轮播
2016/05/02 Javascript
移动端H5开发 Turn.js实现很棒的翻书效果
2016/06/20 Javascript
AngularJS入门教程之 XMLHttpRequest实例讲解
2016/07/27 Javascript
AngularJS 应用身份认证的技巧总结
2016/11/07 Javascript
谈谈因Vue.js引发关于getter和setter的思考
2016/12/02 Javascript
详解vue之页面缓存问题(基于2.0)
2017/01/10 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
2017/02/20 Javascript
详解Vue SSR( Vue2 + Koa2 + Webpack4)配置指南
2018/11/13 Javascript
jQuery提示框插件SweetAlert用法分析
2019/08/05 jQuery
微信小程序canvas开发水果老虎机的思路详解
2020/02/07 Javascript
vuex实现购物车的增加减少移除
2020/06/28 Javascript
[03:07]完美世界DOTA2联赛PWL DAY10 决赛集锦
2020/11/11 DOTA
[39:08]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第一场 12.12
2020/12/16 DOTA
python多线程抓取天涯帖子内容示例
2014/04/03 Python
Python+tkinter模拟“记住我”自动登录实例代码
2018/01/16 Python
Python数据分析之双色球中蓝红球分析统计示例
2018/02/03 Python
python向已存在的excel中新增表,不覆盖原数据的实例
2018/05/02 Python
Python代码块批量添加Tab缩进的方法
2018/06/25 Python
Python tkinter常用操作代码实例
2020/01/03 Python
意大利火车票和铁路通行证专家:ItaliaRail
2019/01/22 全球购物
酒店服务实习自我鉴定
2013/09/22 职场文书
四年级科学教学反思
2014/02/10 职场文书
小学语文教学反思
2014/02/10 职场文书
2015年端午节国旗下演讲稿
2015/03/19 职场文书
征求意见函
2015/06/05 职场文书
幼儿园园长六一致辞
2015/07/31 职场文书
MySQL完整性约束的定义与实例教程
2021/05/30 MySQL