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中利用XML技术构造远程服务(上)
Oct 09 PHP
备份mysql数据库的php代码(一个表一个文件)
May 28 PHP
PHP 图片文件上传实现代码
Dec 29 PHP
PHP中用接口、抽象类、普通基类实现“面向接口编程”与“耦合方法”简述
Mar 23 PHP
nginx+php-fpm配置文件的组织结构介绍
Nov 07 PHP
编写Smarty插件在模板中直接加载数据的详细介绍
Jun 26 PHP
新浪SAE云平台下使用codeigniter的数据库配置
Jun 12 PHP
php中mkdir函数用法实例分析
Nov 15 PHP
Yii2.0高级框架数据库增删改查的一些操作
Nov 16 PHP
phpinfo()中Loaded Configuration File(none)的解决方法
Jan 16 PHP
ThinkPHP中图片按比例切割的代码实例
Mar 08 PHP
php实现的数组转xml案例分析
Sep 28 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类(查找/修改)xml文档
2013/03/26 PHP
PHP程序员基本要求和必备技能
2014/05/09 PHP
部署PHP时的4个配置修改说明
2015/10/19 PHP
PHP保存session到memcache服务器的方法
2016/01/19 PHP
PHP文件上传处理案例分析
2016/10/15 PHP
PHP开发APP端微信支付功能
2017/02/17 PHP
php中yar框架实例用法讲解
2020/12/27 PHP
js类后台管理菜单类-MenuSwitch
2007/09/12 Javascript
iframe的onload在Chrome/Opera中执行两次Bug的解决方法
2011/03/17 Javascript
javascript:void(0)的作用示例介绍
2013/10/28 Javascript
javascript实现下班倒计时效果的方法(可桌面通知)
2015/07/10 Javascript
JavaScript实现倒计时代码段Item1(非常实用)
2015/11/03 Javascript
基于javascript实现彩票随机数生成(简单版)
2020/04/17 Javascript
AngularJS基础 ng-keydown 指令简单示例
2016/08/02 Javascript
JS跨域请求外部服务器的资源
2017/02/06 Javascript
删除table表格行的实例讲解
2017/09/21 Javascript
vue的mixins属性详解
2018/03/14 Javascript
react-native使用leanclound消息推送的方法
2018/08/06 Javascript
详解如何解决vue开发请求数据跨域的问题(基于浏览器的配置解决)
2018/11/12 Javascript
微信小程序实现的自定义分享功能示例
2019/02/12 Javascript
小程序封装wx.request请求并创建接口管理文件的实现
2019/04/29 Javascript
vue使用i18n实现国际化的方法详解
2019/09/05 Javascript
JavaScript 声明私有变量的两种方式
2021/02/05 Javascript
使用Python的Tornado框架实现一个Web端图书展示页面
2016/07/11 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
2018/07/26 Python
基于python实现文件加密功能
2020/01/06 Python
Python 没有main函数的原因
2020/07/10 Python
澳大利亚最大的百货公司:Myer
2018/12/21 全球购物
Skechers越南官方网站:来自美国的运动休闲品牌
2021/02/22 全球购物
日语专业推荐信
2013/11/12 职场文书
服务承诺书怎么写
2014/05/24 职场文书
师范生自荐信模板
2014/05/28 职场文书
学习经验交流会总结
2015/11/02 职场文书
深入解析NumPy中的Broadcasting广播机制
2021/05/30 Python
详解redis在微服务领域的贡献
2021/10/16 Redis
Spring boot实现上传文件到本地服务器
2022/08/14 Java/Android