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 adodb连接不同数据库
Mar 19 PHP
php UTF8 文件的签名问题
Oct 30 PHP
解析PayPal支付接口的PHP开发方式
Nov 28 PHP
提示Trying to clone an uncloneable object of class Imagic的解决
Oct 27 PHP
PHP 读取Postgresql中的数组
Apr 14 PHP
基于PHP编程注意事项的小结
Apr 27 PHP
解析php二分法查找数组是否包含某一元素
May 23 PHP
深入eAccelerator与memcached的区别详解
Jun 06 PHP
php登陆页的密码处理方式分享
Oct 14 PHP
php判断对象是派生自哪个类的方法
Jun 20 PHP
thinkPHP订单数字提醒功能的实现方法
Dec 01 PHP
PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
Jul 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
如何将数据从文本导入到mysql
2006/10/09 PHP
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
2007/02/11 PHP
php_screw 1.5:php加密: 安装与使用详解
2013/06/20 PHP
9条PHP编程小知识及易犯的小错误
2015/01/22 PHP
PHP生成plist数据的方法
2015/06/16 PHP
php基础设计模式大全(注册树模式、工厂模式、单列模式)
2015/08/31 PHP
深入理解PHP之源码目录结构与功能说明
2016/06/01 PHP
Laravel框架源码解析之反射的使用详解
2020/05/14 PHP
PHP7 字符串处理机制修改
2021/03/09 PHP
JavaScript confirm选择判断
2008/10/18 Javascript
JS 继承实例分析
2008/11/04 Javascript
js 巧妙去除数组中的重复项
2010/01/25 Javascript
jquery 年会抽奖程序
2011/12/22 Javascript
登陆成功后自动计算秒数执行跳转
2014/01/23 Javascript
动态读取JSON解析键值对的方法
2014/06/03 Javascript
轻松创建nodejs服务器(8):非阻塞是如何实现的
2014/12/18 NodeJs
详解vue-router 2.0 常用基础知识点之导航钩子
2017/05/10 Javascript
vue+node+webpack环境搭建教程
2017/11/05 Javascript
react-native 圆弧拖动进度条实现的示例代码
2018/04/12 Javascript
Vue.js上传图片到阿里云OSS存储的方法示例
2018/12/13 Javascript
react写一个select组件的实现代码
2019/04/03 Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
2020/06/28 Javascript
[51:20]完美世界DOTA2联赛PWL S2 Magma vs PXG 第一场 11.28
2020/12/01 DOTA
Python调用C/C++动态链接库的方法详解
2014/07/22 Python
Python简单读取json文件功能示例
2017/11/30 Python
解决python删除文件的权限错误问题
2018/04/24 Python
Python爬虫实现简单的爬取有道翻译功能示例
2018/07/13 Python
keras自定义回调函数查看训练的loss和accuracy方式
2020/05/23 Python
为什么python比较流行
2020/06/19 Python
时尚的CSS3进度条效果
2012/02/22 HTML / CSS
预备党员学习十八届三中全会精神思想汇报
2014/09/13 职场文书
2014国庆节餐厅促销活动策划方案
2014/09/16 职场文书
三严三实对照检查材料思想汇报
2014/09/28 职场文书
赵氏孤儿观后感
2015/06/09 职场文书
演讲比赛主持词
2015/06/29 职场文书
2016年度继续教育学习心得体会
2016/01/19 职场文书