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的开合式多级菜单程序
Oct 09 PHP
PHP 和 MySQL 开发的 8 个技巧
Jan 02 PHP
ajax在joomla中的原生态应用代码
Jul 19 PHP
php获取远程图片体积大小的实例
Nov 12 PHP
PHP截取指定图片大小的方法
Dec 10 PHP
php读取flash文件高宽帧数背景颜色的方法
Jan 06 PHP
php简单实现查询数据库返回json数据
Apr 16 PHP
php flush无效,IIS7下php实时输出的方法
Aug 25 PHP
微信公众号OAuth2.0网页授权问题浅析
Jan 21 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
Dec 21 PHP
PHP有序表查找之插值查找算法示例
Feb 10 PHP
laravel实现一个上传图片的接口,并建立软链接,访问图片的方法
Oct 12 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
ThinkPHP实例化模型的四种方法概述
2014/08/22 PHP
php使用json_decode后数字对象转换成了科学计数法的解决方法
2017/02/20 PHP
php实现购物车产品删除功能(2)
2020/07/23 PHP
JavaScript中常见获取元素的方法汇总
2015/03/04 Javascript
javascript原始值和对象引用实例分析
2015/04/25 Javascript
jQuery实现二级下拉菜单效果
2016/01/05 Javascript
总结十个Angular.js由浅入深的面试问题
2016/08/26 Javascript
JavaScript对象封装的简单实现方法(3种方法)
2017/01/03 Javascript
微信小程序 二维码canvas绘制实例详解
2017/01/06 Javascript
原生JS实现圣旨卷轴展开效果
2017/03/06 Javascript
Bootstrap警告框(Alert)插件使用方法
2017/03/21 Javascript
JS实现无缝循环marquee滚动效果
2017/05/22 Javascript
javascript 日期相减-在线教程(附代码)
2017/08/17 Javascript
angular2中使用第三方js库的实例
2018/02/26 Javascript
原生js实现form表单序列化的方法
2018/08/02 Javascript
BootStrap table实现表格行拖拽效果
2018/12/01 Javascript
[50:45]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第一场
2018/04/10 DOTA
跟老齐学Python之传说中的函数编写条规
2014/10/11 Python
开源软件包和环境管理系统Anaconda的安装使用
2017/09/04 Python
python如何使用正则表达式的前向、后向搜索及前向搜索否定模式详解
2017/11/08 Python
python爬虫获取小区经纬度以及结构化地址
2018/12/30 Python
python代码 FTP备份交换机配置脚本实例解析
2019/08/01 Python
PyTorch中的Variable变量详解
2020/01/07 Python
对python中 math模块下 atan 和 atan2的区别详解
2020/01/17 Python
Python中itertools的用法详解
2020/02/07 Python
Python递归函数特点及原理解析
2020/03/04 Python
详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)
2020/04/01 Python
Python实现爬取并分析电商评论
2020/06/19 Python
Html5实现iPhone开机界面示例代码
2013/06/30 HTML / CSS
美国诺德斯特龙百货官网:Nordstrom
2016/08/23 全球购物
美国滑雪和滑雪板商店:Buckman
2018/03/03 全球购物
2014年教师节寄语
2014/04/03 职场文书
校园绿化美化方案
2014/06/08 职场文书
英语教育专业毕业生求职信
2014/08/28 职场文书
向雷锋同志学习倡议书
2015/04/27 职场文书
如何解决springcloud feign 首次调用100%失败的问题
2021/06/23 Java/Android