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 相关文章推荐
PHP4之COOKIE支持详解
Oct 09 PHP
从一个不错的留言本弄的mysql数据库操作类
Sep 02 PHP
php simplexmlElement操作xml的命名空间实现代码
Jan 04 PHP
ThinkPHP自动验证失败的解决方法
Jun 09 PHP
php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
Aug 13 PHP
php返回json数据函数实例
Oct 09 PHP
Thinkphp将二维数组变为标签适用的一维数组方法总结
Oct 30 PHP
php数组操作之键名比较与差集、交集赋值的方法
Nov 10 PHP
PHP多文件上传类实例
Mar 07 PHP
什么是PEAR?什么是PECL?PHP中两个容易混淆的概念解释
Jul 01 PHP
php编程实现简单的网页版计算器功能示例
Apr 26 PHP
Laravel中的Auth模块详解
Aug 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
一步一步学习PHP(4) php 函数 补充2
2010/02/15 PHP
PHP中explode函数和split函数的区别小结
2016/08/24 PHP
PHP版微信第三方实现一键登录及获取用户信息的方法
2016/10/14 PHP
PHP获取星期几的常用方法小结
2018/12/18 PHP
javascript appendChild,innerHTML,join性能比较代码
2009/08/29 Javascript
js利用与或运算符优先级实现if else条件判断表达式
2010/04/15 Javascript
JQuery live函数
2010/12/24 Javascript
JQuery的Ajax跨域请求原理概述及实例
2013/04/26 Javascript
使用jquery的ajax需要注意的地方dataType的设置
2013/08/12 Javascript
JS使用post提交的两种方式
2015/12/03 Javascript
Bootstrap导航中表单简单实现代码
2017/03/06 Javascript
canvas简单快速的实现知乎登录页背景效果
2017/05/08 Javascript
jQuery 循环遍历改变a标签的href(实例讲解)
2017/07/12 jQuery
JS实现弹出下载对话框及常见文件类型的下载
2017/07/13 Javascript
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
2017/08/09 jQuery
jQuery动态添加.active 实现导航效果代码思路详解
2017/08/29 jQuery
用vue构建多页面应用的示例代码
2017/09/20 Javascript
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
2018/01/21 jQuery
Bootstrap导航菜单点击后无法自动添加active的处理方法
2018/08/10 Javascript
Vue.js实现双向数据绑定方法(表单自动赋值、表单自动取值)
2018/08/27 Javascript
Nodejs 数组的队列以及forEach的应用详解
2021/02/25 NodeJs
python批量修改文件名的实现代码
2014/09/01 Python
Python字符串处理之count()方法的使用
2015/05/18 Python
Python 爬虫爬取指定博客的所有文章
2016/02/17 Python
python目录与文件名操作例子
2016/08/28 Python
Python中XlsxWriter模块简介与用法分析
2018/04/24 Python
Django的ListView超详细用法(含分页paginate)
2020/05/21 Python
python爬虫scrapy基于CrawlSpider类的全站数据爬取示例解析
2021/02/20 Python
解决CSS3的opacity属性带来的层叠顺序问题
2016/05/09 HTML / CSS
上海微创软件面试题
2012/06/14 面试题
什么是方法的重载
2013/06/24 面试题
环境科学毕业生自荐信
2013/11/21 职场文书
《临死前的严监生》教学反思
2014/02/13 职场文书
2014高考励志标语
2014/06/05 职场文书
质量主管工作职责
2014/09/26 职场文书
公安干警正风肃纪心得体会
2016/01/15 职场文书