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 相关文章推荐
建立文件交换功能的脚本(一)
Oct 09 PHP
php tp验证表单与自动填充函数代码
Feb 22 PHP
PHP模拟QQ登录的方法
Jul 29 PHP
PHP 二维数组和三维数组的过滤
Mar 16 PHP
PHP使用PDO操作数据库的乱码问题解决方法
Apr 08 PHP
ThinkPHP中Common/common.php文件常用函数功能分析
May 20 PHP
PHP页面间传递值和保持值的方法
Aug 24 PHP
php技巧小结【推荐】
Jan 19 PHP
php使用include 和require引入文件的区别
Feb 16 PHP
PHP实现的DES加密解密类定义与用法示例
Nov 02 PHP
微信公众号实现扫码获取微信用户信息(网页授权)
Apr 09 PHP
Laravel 5.2 文档 数据库 ―― 起步介绍
Oct 21 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
php中使用Curl、socket、file_get_contents三种方法POST提交数据
2011/08/12 PHP
深入解析php中的foreach问题
2013/06/30 PHP
3款值得推荐的微信开发开源框架
2014/10/28 PHP
PHP简单选择排序算法实例
2015/01/26 PHP
解决PHP里大量数据循环时内存耗尽的方法
2015/10/10 PHP
PHP 开发者该知道的 5 个 Composer 小技巧
2016/02/03 PHP
利用PHPExcel实现Excel文件的写入和读取
2017/04/26 PHP
php显示页码分页类的封装
2017/06/08 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
精心挑选的15个jQuery下拉菜单制作教程
2012/06/15 Javascript
jQuery之选择组件的深入解析
2013/06/19 Javascript
Nodejs Post请求报socket hang up错误的解决办法
2014/09/25 NodeJs
js实现textarea限制输入字数
2017/02/13 Javascript
bootstrap3-dialog-master模态框使用详解
2017/08/22 Javascript
vue params、query传参使用详解
2017/09/12 Javascript
vue中的适配px2rem示例代码
2018/11/19 Javascript
如何从0开始用node写一个自己的命令行程序
2018/12/29 Javascript
Layui数据表格判断编辑输入的值,是否为我需要的类型详解
2019/10/26 Javascript
Vue数组响应式操作及高阶函数使用代码详解
2020/08/01 Javascript
vue基于Echarts的拖拽数据可视化功能实现
2020/12/04 Vue.js
Python中的__slots__示例详解
2017/07/06 Python
NumPy 基本切片和索引的具体使用方法
2019/04/24 Python
python3通过selenium爬虫获取到dj商品的实例代码
2019/04/25 Python
Python3匿名函数lambda介绍与使用示例
2019/05/18 Python
详解python3 GUI刷屏器(附源码)
2021/02/18 Python
css 如何让背景图片拉伸填充避免重复显示
2013/07/11 HTML / CSS
超市营业员求职简历的自我评价
2013/10/17 职场文书
模具专业推荐信
2013/10/30 职场文书
一份报关员的职业规划范文
2014/01/08 职场文书
2014两会学习心得:时代的发展
2014/03/17 职场文书
2014年六一儿童节演讲稿
2014/05/23 职场文书
事业单位年度考核个人总结
2015/02/12 职场文书
《分数乘法》教学反思
2016/02/24 职场文书
2016年度农村党员干部主题教育活动总结
2016/04/06 职场文书
预备党员的思想汇报,你真的会写吗?
2019/06/28 职场文书
Java 轮询锁使用时遇到问题
2022/05/11 Java/Android