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实现与ASP Banner组件相似的类
Oct 09 PHP
php上的memcache和memcached两个pecl库
Mar 29 PHP
php设计模式 DAO(数据访问对象模式)
Jun 26 PHP
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
Jul 02 PHP
php中用date函数获取当前时间有误的解决办法
Aug 02 PHP
phpword插件导出word文件时中文乱码问题处理方案
Aug 19 PHP
PHP中Session和Cookie是如何操作的
Oct 10 PHP
java微信开发之上传下载多媒体文件
Jun 24 PHP
php使用curl详细解析及问题汇总
Aug 11 PHP
Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法
Oct 08 PHP
PHP操作XML中XPath的应用示例
Jul 04 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
Nov 14 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
模拟OICQ的实现思路和核心程序(三)
2006/10/09 PHP
php读取本地文件常用函数(fopen与file_get_contents)
2013/09/09 PHP
XAMPP安装与使用方法详细解析
2013/11/27 PHP
PHP中is_file不能替代file_exists的理由
2014/03/04 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
2018/03/02 PHP
PHP实现微信小程序用户授权的工具类示例
2019/03/05 PHP
js 屏蔽鼠标右键脚本附破解方法
2009/12/03 Javascript
javascript 程序库的比较(一)之DOM功能
2010/04/07 Javascript
原生javascript兼容性测试实例
2013/07/01 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
2015/08/27 Javascript
javascript点击按钮实现隐藏显示切换效果
2016/02/03 Javascript
jQuery的promise与deferred对象在异步回调中的作用
2016/05/03 Javascript
Angular 理解module和injector,即依赖注入
2016/09/07 Javascript
BootStrap框架个人总结(bootstrap框架、导航条、下拉菜单、轮播广告carousel、栅格系统布局、标签页tabs、模态框、菜单定位)
2016/12/01 Javascript
在mpvue框架中使用Vant WeappUI组件库的注意事项【推进】
2019/06/09 Javascript
Node.JS获取GET,POST数据之queryString模块使用方法详解
2020/02/06 Javascript
js实现拾色器插件(ColorPicker)
2020/05/21 Javascript
利用Python脚本实现ping百度和google的方法
2017/01/24 Python
Python三级菜单的实例
2017/09/13 Python
python代理工具mitmproxy使用指南
2019/07/04 Python
Django model 中设置联合约束和联合索引的方法
2019/08/06 Python
python实现简单的五子棋游戏
2020/09/01 Python
Python通过队列来实现进程间通信的示例
2020/10/14 Python
Sunglasses Shop德国站:欧洲排名第一的太阳镜网站
2017/08/01 全球购物
都柏林通行卡/城市通票:The Dublin Pass
2020/02/16 全球购物
const和static readonly区别
2013/05/20 面试题
技术经理的自我评价范文
2013/12/03 职场文书
八年级英语教学反思
2014/01/09 职场文书
生日主持词
2014/03/20 职场文书
承诺书格式范文
2014/06/03 职场文书
公司年终奖分配方案
2014/06/16 职场文书
贫困证明模板(3篇)
2014/09/16 职场文书
2016党风廉政建设心得体会范文
2016/01/25 职场文书
css position fixed 左右双定位的实现代码
2021/04/29 HTML / CSS
python flappy bird小游戏分步实现流程
2022/02/15 Python
SpringBoot整合Minio文件存储
2022/04/03 Java/Android