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 相关文章推荐
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
Oct 29 PHP
PHP数组交集的优化代码分析
Mar 06 PHP
关于尾递归的使用详解
May 02 PHP
深入解析PHP内存管理之谁动了我的内存
Jun 20 PHP
解析PHP中ob_start()函数的用法
Jun 24 PHP
PHP语法自动检查的Vim插件
Aug 11 PHP
跟我学Laravel之请求(Request)的生命周期
Oct 15 PHP
php生成唯一的订单函数分享
Feb 02 PHP
使用Huagepage和PGO来提升PHP7的执行性能
Nov 30 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
Oct 25 PHP
php断点续传之文件分割合并详解
Dec 13 PHP
tp5 实现列表数据根据状态排序
Oct 18 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通过cookies获取远程网页的指定代码
2013/06/25 PHP
php读取大文件示例分享(文件操作类)
2014/04/13 PHP
php将字符串全部转换成大写或者小写的方法
2015/03/17 PHP
详解PHP执行定时任务的实现思路
2015/12/21 PHP
php使用imagecopymerge()函数创建半透明水印
2018/01/25 PHP
PHP抽象类和接口用法实例详解
2019/07/20 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
2019/08/30 PHP
json 定义
2008/06/10 Javascript
Javascript select控件操作大全(新增、修改、删除、选中、清空、判断存在等)
2008/12/19 Javascript
XHTML下,JS浮动代码失效的问题
2009/11/12 Javascript
JS getMonth()日期函数的值域是0-11
2010/02/15 Javascript
document.createElement()用法及注意事项(ff下不兼容)
2013/03/13 Javascript
Jquery多选下拉列表插件jquery multiselect功能介绍及使用
2013/05/24 Javascript
JavaScript 操作table,可以新增行和列并且隔一行换背景色代码分享
2013/07/05 Javascript
javascript动态的改变IFrame的高度实现自动伸展
2013/10/12 Javascript
jquery通过visible来判断标签是否显示或隐藏
2014/05/08 Javascript
AngularJS学习笔记之依赖注入详解
2016/05/16 Javascript
Vue.js每天必学之过滤器与自定义过滤器
2016/09/07 Javascript
JS 组件系列之BootstrapTable的treegrid功能
2017/06/16 Javascript
利用Javascript开发一个二维周视图日历
2017/12/14 Javascript
详解webpack与SPA实践之开发环境搭建
2017/12/18 Javascript
layui当点击文本框时弹出选择框,显示选择内容的例子
2019/09/02 Javascript
在Chrome DevTools中调试JavaScript的实现
2020/04/07 Javascript
探索浏览器页面关闭window.close()的使用详解
2020/08/21 Javascript
从零学python系列之新版本导入httplib模块报ImportError解决方案
2014/05/23 Python
Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
2017/04/17 Python
Python切片工具pillow用法示例
2018/03/30 Python
python调用xlsxwriter创建xlsx的方法
2018/05/03 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
2018/05/29 Python
浅析python3字符串格式化format()函数的简单用法
2018/12/07 Python
如何基于python操作json文件获取内容
2019/12/24 Python
Python3实现发送邮件和发送短信验证码功能
2020/01/07 Python
旷课检讨书2000字
2014/01/14 职场文书
校园歌咏比赛主持词
2014/03/18 职场文书
2016党员党课心得体会
2016/01/07 职场文书
MySQL中VARCHAR与CHAR格式数据的区别
2021/05/26 MySQL