基于php实现随机合并数组并排序(原排序)


Posted in PHP onNovember 26, 2015

最近做了一个项目,其中有这样一个需求要实现,原有帖子列表A,现在需要在A中推广新业务B,那么需要在A列表中1:1混合B中的数据,随机混合,但是需要保持A和B两列原来的数据排序,具体详情请看下文。

原理

获知总共元素数量N;
for循环N次,取随机数;
根据随机数依次从头获取A或B的值,推入新数组中;

代码:

//随机合并两个数组元素,保持原有数据的排序不变(即各个数组的元素在合并后的数组中排序与自身原来一致)
function shuffleMergeArray() {
  $mergeArray = array();
  $sum = count($array1) + count($array2);
  for ($k = $sum; $k > 0; $k--) {
    $number = mt_rand(1, 2);
    if ($number == 1) {
      $mergeArray[] = $array2 ? array_shift($array2) : array_shift($array1);
    } else {
      $mergeArray[] = $array1 ? array_shift($array1) : array_shift($array2);
    }
  }
  return $mergeArray;
}

示例:

合并前的数组:

$array1 = array(1, 2, 3, 4);
$array2 = array('a', 'b', 'c', 'd', 'e');

合并后的数据:

$mergeArray = array (
 0 => 'a',
 1 => 1,
 2 => 'b',
 3 => 2,
 4 => 'c',
 5 => 'd',
 6 => 3,
 7 => 4,
 8 => 'e',
)

php数组随机排序

<?php 
$array = array('A','2','3','4','5','6','7','8','9','10','J','Q','K'); 
shuffle($array);                    //随机排序数组 
print_r($array);                    //输出数组 
?>
PHP 相关文章推荐
跟我学小偷程序之成功偷取首页(第三天)
Oct 09 PHP
mysql,mysqli,PDO的各自不同介绍
Sep 19 PHP
深入理解php的MySQL连接类
Jun 07 PHP
深入解析php中的foreach问题
Jun 30 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
Oct 15 PHP
PHP判断数据库中的记录是否存在的方法
Nov 14 PHP
php实现分页显示
Nov 03 PHP
PHP通过反射动态加载第三方类和获得类源码的实例
Nov 27 PHP
让ThinkPHP的模板引擎达到最佳效率的方法详解
Mar 14 PHP
laravel 框架配置404等异常页面
Jan 07 PHP
PHP PDOStatement::setFetchMode讲解
Feb 03 PHP
解决thinkPHP 5 nginx 部署时,只跳转首页的问题
Oct 16 PHP
PHP随手笔记整理之PHP脚本和JAVA连接mysql数据库
Nov 25 #PHP
php实现遍历多维数组的方法
Nov 25 #PHP
WordPress迁移时一些常见问题的解决方法整理
Nov 24 #PHP
基础的WordPress插件制作教程
Nov 24 #PHP
优化WordPress的Google字体以加速国内服务器上的运行
Nov 24 #PHP
在WordPress中实现评论头像的自定义默认和延迟加载
Nov 24 #PHP
WordPress中缩略图的使用以及相关技巧
Nov 24 #PHP
You might like
xajax写的留言本
2006/11/25 PHP
php学习之数据类型之间的转换介绍
2011/06/09 PHP
php定义参数数量可变的函数用法实例
2015/03/16 PHP
jquery ui dialog里调用datepicker的问题
2009/08/06 Javascript
Javascript 实用小技巧
2010/04/07 Javascript
基于jquery的高性能td和input切换并可修改内容实现代码
2011/01/09 Javascript
jquery each()源代码
2011/02/14 Javascript
extjs两个tbar问题探讨
2013/08/08 Javascript
浅析基于WEB前端页面的页面内容搜索的实现思路
2014/06/10 Javascript
常用的jquery模板插件——jQuery Boilerplate介绍
2014/09/23 Javascript
Select2.js下拉框使用小结
2016/10/24 Javascript
原生js开发的日历插件
2017/02/04 Javascript
JS实现的简单下拉框联动功能示例
2018/05/11 Javascript
VUE-Table上绑定Input通过render实现双向绑定数据的示例
2018/08/27 Javascript
工作中常用到的ES6语法
2018/09/04 Javascript
每天学点Vue源码之vm.$mount挂载函数
2019/03/11 Javascript
jQuery实现动态加载(按需加载)javascript文件的方法分析
2019/05/31 jQuery
微信小程序的授权实现过程解析
2019/08/02 Javascript
使用typescript构建Vue应用的实现
2019/08/26 Javascript
解决layui table表单提示数据接口请求异常的问题
2019/09/24 Javascript
将Vue组件库更换为按需加载的方法步骤
2020/05/06 Javascript
jQuery AJAX应用实例总结
2020/05/19 jQuery
[02:09]EHOME夺得首届辉夜杯冠军—现场颁奖仪式
2015/12/28 DOTA
Python3 安装PyQt5及exe打包图文教程
2019/01/08 Python
详解Python连接MySQL数据库的多种方式
2019/04/16 Python
python 经典数字滤波实例
2019/12/16 Python
python列表返回重复数据的下标
2020/02/10 Python
使用OpenCV去除面积较小的连通域
2020/07/05 Python
详解CSS3的图层阴影和文字阴影效果使用
2016/06/09 HTML / CSS
Etam俄罗斯:法国女士内衣和家居服网上商店
2019/10/30 全球购物
向全球直邮输送天然健康产品:iHerb.com
2020/05/03 全球购物
自我鉴定怎么写
2014/01/12 职场文书
安全目标责任书
2014/07/22 职场文书
分享7个 Python 实战项目练习
2022/03/03 Python
Linux服务器离线安装 nginx的详细步骤
2022/06/16 Servers
使用Postman测试需要授权的接口问题
2022/06/21 Java/Android