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 相关文章推荐
第十一节--重载
Nov 16 PHP
php 抽象类的简单应用
Sep 06 PHP
codeigniter教程之多文件上传使用示例
Feb 11 PHP
非常有用的9个PHP代码片段
Apr 06 PHP
php实现数组纵向转横向并过滤重复值的方法分析
May 29 PHP
php爬取天猫和淘宝商品数据
Feb 23 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
Apr 21 PHP
Laravel框架源码解析之反射的使用详解
May 14 PHP
laravel开发环境homestead搭建过程详解
Jul 03 PHP
PHP unset函数原理及使用方法解析
Aug 14 PHP
php命令行模式代码实例详解
Feb 26 PHP
imagettftext() 失效,不起作用
Mar 09 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
PHP5在Apache下的两种模式的安装
2006/09/05 PHP
浅析PHP文件下载原理
2014/12/25 PHP
PHP实现活动人选抽奖功能
2017/04/19 PHP
Laravel实现ApiToken认证请求
2019/10/14 PHP
Javascript 更新 JavaScript 数组的 uniq 方法
2008/01/23 Javascript
JS与框架页的操作代码
2010/01/17 Javascript
js实现一个省市区三级联动选择框代码分享
2013/03/06 Javascript
JS实现简单的Canvas画图实例
2013/07/04 Javascript
javascript实现table选中的行以指定颜色高亮显示的方法
2015/05/13 Javascript
js拖拽的原型声明和用法总结
2016/04/04 Javascript
js简单实现调整网页字体大小的方法
2016/07/23 Javascript
Vue.js:使用Vue-Router 2实现路由功能介绍
2017/02/22 Javascript
Angular开发者指南之入门介绍
2017/03/05 Javascript
轻松搞定jQuery+JSONP跨域请求的解决方案
2018/03/06 jQuery
Vue通过WebSocket建立长连接的实现代码
2019/11/05 Javascript
vue 点击其他区域关闭自定义div操作
2020/07/17 Javascript
简单了解JavaScript作用域
2020/07/31 Javascript
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
2017/06/21 Python
Python使用type关键字创建类步骤详解
2019/07/23 Python
python list数据等间隔抽取并新建list存储的例子
2019/11/27 Python
python 变量初始化空列表的例子
2019/11/28 Python
Python爬虫库requests获取响应内容、响应状态码、响应头
2020/01/25 Python
python3的pip路径在哪
2020/06/23 Python
python爬取微博评论的实例讲解
2021/01/15 Python
如何用css3实现switch组件开关的方法
2018/02/09 HTML / CSS
上海中网科技笔试题
2012/02/19 面试题
国贸专业大学生职业生涯规划范文
2014/01/10 职场文书
办理居住证介绍信
2014/01/15 职场文书
班主任工作经验材料
2014/02/02 职场文书
领导班子整改方案和个人整改措施
2014/10/25 职场文书
2014年卫生院工作总结
2014/12/03 职场文书
节水倡议书
2015/01/19 职场文书
2015年实习班主任工作总结
2015/04/23 职场文书
教师节简报
2015/07/20 职场文书
商业计划书如何写?关键问题有哪些?
2019/07/11 职场文书
MySQL索引失效场景及解决方案
2022/07/23 MySQL