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 相关文章推荐
一个颜色轮换的简单例子
Oct 09 PHP
小偷PHP+Html+缓存
Dec 20 PHP
PHP中的日期处理方法集锦
Jan 02 PHP
在PHP中PDO解决中文乱码问题的一些补充
Sep 06 PHP
PHP的array_diff()函数在处理大数组时的效率问题
Nov 27 PHP
php中邮箱地址正则表达式实现与详解
Apr 24 PHP
Laravel路由设定和子路由设定实例分析
Mar 30 PHP
Joomla实现组件中弹出一个模式(modal)窗口的方法
May 04 PHP
PHP中ID设置自增后不连续的原因分析及解决办法
Aug 21 PHP
PHP房贷计算器实例代码,等额本息,等额本金
Apr 01 PHP
PHP快速推送微信模板消息
Apr 14 PHP
PHP-FPM 的管理和配置详解
Feb 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 in_array 函数使用说明与in_array需要注意的地方说明
2010/04/13 PHP
PHP的Yii框架中行为的定义与绑定方法讲解
2016/03/18 PHP
thinkPHP模板中for循环与switch语句用法示例
2016/11/30 PHP
解决Laravel5.5下的toArray问题
2019/10/15 PHP
广告显示判断
2006/08/31 Javascript
原生javascript和jquery判断浏览器版本等信息
2013/07/04 Javascript
抛弃Nginx使用nodejs做反向代理服务器
2014/07/17 NodeJs
使用mini-define实现前端代码的模块化管理
2014/12/25 Javascript
javascript实现的固定位置悬浮窗口实例
2015/04/30 Javascript
JavaScript学习小结(一)——JavaScript入门基础
2015/09/02 Javascript
JS实现样式清新的横排下拉菜单效果
2015/10/09 Javascript
微信小程序 http请求详细介绍
2016/10/09 Javascript
jQuery图片轮播功能实例代码
2017/01/29 Javascript
NodeJs模拟登陆正方教务
2017/04/28 NodeJs
Vue实现todolist删除功能
2018/06/26 Javascript
详解阿里Node.js技术文档之process模块学习指南
2021/01/04 Javascript
分享一下如何编写高效且优雅的 Python 代码
2017/09/07 Python
python opencv之分水岭算法示例
2018/02/24 Python
儿童python练习实例
2018/05/27 Python
Python计算一个给定时间点前一个月和后一个月第一天的方法
2018/05/29 Python
基于numpy中数组元素的切片复制方法
2018/11/15 Python
Python 使用list和tuple+条件判断详解
2019/07/30 Python
Django 源码WSGI剖析过程详解
2019/08/05 Python
Python selenium键盘鼠标事件实现过程详解
2020/07/28 Python
Python实现敏感词过滤的4种方法
2020/09/12 Python
在HTML5中如何使用CSS建立不可选的文字
2014/10/17 HTML / CSS
CSS3实现银灰色动画效果的导航菜单代码
2015/09/01 HTML / CSS
HTML5未来发展趋势
2016/02/01 HTML / CSS
美国杰西潘尼官网:JCPenney
2019/06/12 全球购物
会计专业个人求职信范文
2014/01/08 职场文书
高中军训广播稿
2014/01/14 职场文书
小学生开学第一课活动方案
2014/03/27 职场文书
小学班主任寄语大全
2014/04/04 职场文书
公安学专业求职信
2014/07/27 职场文书
整改通知书格式
2015/04/22 职场文书
商务信函英语问候语
2015/11/10 职场文书