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函数
May 31 PHP
PHP连接SQLSERVER 注意事项(附dll文件下载)
Jun 28 PHP
php生成图形验证码几种方法小结
Aug 15 PHP
ThinkPHP模板中判断volist循环的最后一条记录的验证方法
Jul 01 PHP
php数组键值用法实例分析
Feb 27 PHP
php获取发送给用户的header信息的方法
Mar 16 PHP
php curl 上传文件代码实例
Apr 27 PHP
php中array_column函数简单实现方法
Jul 11 PHP
yii2.0整合阿里云oss删除单个文件的方法
Sep 19 PHP
Yii框架模拟组件调用注入示例
Nov 11 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
Nov 14 PHP
PHP+Redis事务解决高并发下商品超卖问题(推荐)
Aug 03 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&amp;mysql(三)
2006/10/09 PHP
php stripslashes和addslashes的区别
2014/02/03 PHP
ThinkPHP模板引擎之导入资源文件方法详解
2014/06/18 PHP
php不使用copy()函数复制文件的方法
2015/03/13 PHP
PHP设计模式之建造者模式定义与用法简单示例
2018/08/13 PHP
Jquery AJAX 用于计算点击率(统计)
2010/06/30 Javascript
利用webqq协议使用python登录qq发消息源码参考
2013/04/08 Javascript
使用js判断当前时区TimeZone是否是夏令时
2014/02/23 Javascript
jQuery实现冻结表头的方法
2015/03/09 Javascript
JS+CSS实现简易实用的滑动门菜单效果
2015/09/18 Javascript
深入浅析Extjs中store分组功能的使用方法
2016/04/20 Javascript
JS定义类的六种方式详解
2016/05/12 Javascript
Jquery on绑定的事件 触发多次实例代码
2016/12/08 Javascript
VUE element-ui 写个复用Table组件的示例代码
2017/11/18 Javascript
详解js 创建对象的几种方法
2019/03/08 Javascript
ES6顶层对象、global对象实例分析
2019/06/14 Javascript
微信小程序实现下滑到底部自动翻页功能
2020/03/07 Javascript
Python实现查找系统盘中需要找的字符
2015/07/14 Python
Python中防止sql注入的方法详解
2017/02/25 Python
Python字符串拼接的几种方法整理
2017/08/02 Python
Python数据结构与算法之常见的分配排序法示例【桶排序与基数排序】
2017/12/15 Python
使用 Python 实现微信群友统计器的思路详解
2018/09/26 Python
在IPython中执行Python程序文件的示例
2018/11/01 Python
python 将日期戳(五位数时间)转换为标准时间
2019/07/11 Python
使用python os模块复制文件到指定文件夹的方法
2019/08/22 Python
解决Django Haystack全文检索为空的问题
2020/05/19 Python
使用Python解析Chrome浏览器书签的示例
2020/11/13 Python
Pytorch实验常用代码段汇总
2020/11/19 Python
python RSA加密的示例
2020/12/09 Python
一款利用html5和css3动画排列人物头像的实例演示
2014/12/05 HTML / CSS
医药工作者的求职信范文
2013/09/21 职场文书
保荐人的岗位职责
2013/11/19 职场文书
购房协议书范本
2014/04/11 职场文书
幼儿园端午节活动方案
2014/08/25 职场文书
三年级学生评语大全
2014/12/26 职场文书
win10电脑双屏显示一个黑屏怎么办?win10电脑双屏显示一个黑屏解决方法
2022/07/15 数码科技