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 JSON 数据解析代码
May 26 PHP
深入PHP许愿墙模块功能分析
Jun 25 PHP
深入解析php中的foreach函数
Aug 31 PHP
完善CodeIgniter在IDE中代码提示功能的方法
Jul 19 PHP
Win2003+apache+PHP+SqlServer2008 配置生产环境
Jul 29 PHP
php实现的简单日志写入函数
Mar 31 PHP
PHP简单实现无限级分类的方法
May 13 PHP
修改Laravel5.3中的路由文件与路径
Aug 10 PHP
yii gridview实现时间段筛选功能
Aug 15 PHP
Laravel构建即时应用的一种实现方法详解
Aug 31 PHP
php微信公众号开发之欢迎老朋友
Oct 20 PHP
Yii 使用intervention/image拓展实现图像处理功能
Jun 22 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中使用与Perl兼容的正则表达式
2006/11/26 PHP
php过滤所有恶意字符(批量过滤post,get敏感数据)
2014/03/18 PHP
PHP多线程之内部多线程实例分析
2015/03/09 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
flash 得到自身url参数的代码
2009/11/15 Javascript
javascript实现上传图片并预览的效果实现代码
2011/04/11 Javascript
javascript 使用for循环时该注意的问题-附问题总结
2015/08/19 Javascript
JS实现自动切换文字的导航效果代码
2015/08/27 Javascript
JavaScript字符串常用的方法
2016/03/10 Javascript
JavaScript九九乘法口诀表的简单实现
2016/10/04 Javascript
基于Vue.js实现简单搜索框
2020/03/26 Javascript
JavaScript实现经典排序算法之冒泡排序
2016/12/28 Javascript
yii form 表单提交之前JS在提交按钮的验证方法
2017/03/15 Javascript
Vue实战之vue登录验证的实现代码
2017/10/31 Javascript
关于Angularjs中自定义指令一些有价值的细节和技巧小结
2018/04/22 Javascript
vue组件定义,全局、局部组件,配合模板及动态组件功能示例
2019/03/19 Javascript
利用Node.js如何实现文件循环覆写
2019/04/05 Javascript
Vue 防止短时间内连续点击后多次触发请求的操作
2020/11/11 Javascript
python 读写文件,按行修改文件的方法
2018/07/12 Python
python根据url地址下载小文件的实例
2018/12/18 Python
python三引号输出方法
2019/02/27 Python
对Python 中矩阵或者数组相减的法则详解
2019/08/26 Python
Python利用全连接神经网络求解MNIST问题详解
2020/01/14 Python
搭建pypi私有仓库实现过程详解
2020/11/25 Python
Jupyter Notebook 远程访问配置详解
2021/01/11 Python
一道SQL面试题
2012/12/31 面试题
经典优秀个人求职信分享
2013/12/12 职场文书
超级搞笑检讨书
2014/01/15 职场文书
九年级政治教学反思
2014/02/06 职场文书
蛋糕店创业计划书
2014/05/06 职场文书
项目投资建议书
2014/05/16 职场文书
财务整改报告范文
2014/11/05 职场文书
开会迟到检讨书范文
2015/05/06 职场文书
利用js实现简单开关灯代码
2021/11/23 Javascript
js中Map和Set的用法及区别实例详解
2022/02/15 Javascript
SpringBoot中HttpSessionListener的简单使用方式
2022/03/17 Java/Android