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
使用adodb lite解决问题
Dec 31 PHP
php与mysql建立连接并执行SQL语句的代码
Jul 04 PHP
PHP用strstr()函数阻止垃圾评论(通过判断a标记)
Sep 28 PHP
php ckeditor上传图片文件名乱码解决方法
Nov 15 PHP
php替换字符串中间字符为省略号的方法
May 04 PHP
解读PHP中的垃圾回收机制
Aug 10 PHP
微信公众平台开发之天气预报功能
Aug 31 PHP
PHP is_array() 检测变量是否是数组的实现方法
Jun 13 PHP
基于win2003虚拟机中apache服务器的访问
Aug 01 PHP
PHP CURL中传递cookie的方法步骤
May 09 PHP
php命名空间设计思想、用法与缺点分析
Jul 17 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
Classes and Objects in PHP5-面向对象编程 [1]
2006/10/09 PHP
Zend studio文件注释模板设置方法
2013/09/29 PHP
PHP中if和or运行效率对比
2014/12/12 PHP
php单例模式的简单实现方法
2016/06/10 PHP
php获取今日开始时间和结束时间的方法
2017/02/27 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
2018/05/16 PHP
Nigma vs Alliance BO5 第三场2.14
2021/03/10 DOTA
学习ExtJS TextField常用方法
2009/10/07 Javascript
关于ExtJS4.1:快捷键支持的问题
2013/04/24 Javascript
js中通过父级进行查找定位元素
2014/06/15 Javascript
node.js中的定时器nextTick()和setImmediate()区别分析
2014/11/26 Javascript
js实现iframe自动自适应高度的方法
2015/02/17 Javascript
jquery仿百度经验滑动切换浏览效果
2015/04/14 Javascript
微信小程序 window_x64环境搭建
2016/09/30 Javascript
JS中split()用法(将字符串按指定符号分割成数组)
2016/10/24 Javascript
javascript中的后退和刷新实现方法
2016/11/10 Javascript
详解使用webpack构建多页面应用
2017/12/21 Javascript
解决betterScroll在vue中存在图片时,出现拉不动的问题
2018/09/27 Javascript
详解vue或uni-app的跨域问题解决方案
2020/02/21 Javascript
[04:49]2014DOTA2国际邀请赛 Newbee顺利挺进总决赛 ImbaTV独家专访
2014/07/19 DOTA
Python爬虫之pandas基本安装与使用方法示例
2018/08/08 Python
Python修改文件往指定行插入内容的实例
2019/01/30 Python
python实现五子棋游戏
2019/06/18 Python
python实现通过flask和前端进行数据收发
2019/08/22 Python
python 上下文管理器及自定义原理解析
2019/11/19 Python
python保留小数位的三种实现方法
2020/01/07 Python
python 如何区分return和yield
2020/09/22 Python
关于python3.9安装wordcloud出错的问题及解决办法
2020/11/02 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
2021/03/03 Python
linux下进程间通信的方式
2014/12/23 面试题
高一历史教学反思
2014/01/13 职场文书
国际商务专业职业生涯规划书范文
2014/01/17 职场文书
教师听课评语大全
2014/12/31 职场文书
房产遗嘱范本
2015/08/06 职场文书
2016年春节慰问信息大全
2015/11/30 职场文书
2019年共青团工作条例最新版
2019/11/12 职场文书