基于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 相关文章推荐
PHP的单引号和双引号 字符串效率
May 27 PHP
thinkphp使用literal防止模板标签被解析的方法
Nov 22 PHP
php 删除cookie方法详解
Dec 01 PHP
php获取从html表单传递数组的方法
Mar 20 PHP
php获取指定范围内最接近数的方法
Jun 02 PHP
ThinkPHP路由详解
Jul 27 PHP
PHP获取用户访问IP地址的5种方法
May 16 PHP
thinkPHP批量删除的实现方法分析
Nov 09 PHP
iOS自定义提示弹出框实现类似UIAlertView的效果
Nov 16 PHP
PHP实现的简单sha1加密功能示例
Aug 27 PHP
php框架CodeIgniter使用redis的方法分析
Apr 13 PHP
laravel实现前后台路由分离的方法
Oct 13 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
PHP的一个基础知识 表单提交
2011/07/04 PHP
Win7 64位系统下PHP连接Oracle数据库
2014/08/20 PHP
PHP与Perl之间知识点区别整理
2019/03/19 PHP
PHP调用接口API封装的例子
2019/10/11 PHP
for 循环性能比较 提高for循环的效率
2009/03/19 Javascript
jQuery学习笔记之jQuery动画效果
2013/09/09 Javascript
原生javascript模仿win8等待提示圆圈进度条
2014/04/24 Javascript
jQuery使用之处理页面元素用法实例
2015/01/19 Javascript
javascript基于DOM实现权限选择实例分析
2015/05/14 Javascript
jQuery结合ajax实现动态加载文本内容
2015/05/19 Javascript
jQuery实现checkbox全选的方法
2015/06/10 Javascript
深入学习jQuery Validate表单验证
2016/01/18 Javascript
JS实现动态生成表格并提交表格数据向后端
2020/11/25 Javascript
JavaScript中常用的验证reg
2016/10/13 Javascript
jquery获取table指定行和列的数据方法(当前选中行、列)
2016/11/07 Javascript
jquery Ajax 全局调用封装实例详解
2017/01/16 Javascript
vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)
2017/03/30 Javascript
vue.js的安装方法
2017/05/12 Javascript
基于ExtJs在页面上window再调用Window的事件处理方法
2017/07/26 Javascript
微信小程序表单验证功能完整实例
2017/12/01 Javascript
jQuery+SpringMVC中的复选框选择与传值实例
2018/01/08 jQuery
React Native自定义控件底部抽屉菜单的示例
2018/02/08 Javascript
Bootstrap4如何定制自己的颜色和风格
2018/02/26 Javascript
vue的.vue文件是怎么run起来的(vue-loader)
2018/12/10 Javascript
少女风vue组件库的制作全过程
2019/05/15 Javascript
详解vuex的简单todolist例子
2019/07/14 Javascript
python文字和unicode/ascll相互转换函数及简单加密解密实现代码
2019/08/12 Python
python3 实现函数写文件路径的正确方法
2019/11/27 Python
Django利用elasticsearch(搜索引擎)实现搜索功能
2020/11/26 Python
Ticketmaster德国票务网站:购买音乐会和体育等门票
2016/11/14 全球购物
应届生船舶驾驶求职信
2013/10/19 职场文书
工作中的自我评价如何写好
2013/10/28 职场文书
制冷与空调专业毕业生推荐信
2014/07/07 职场文书
党员个人批评与自我批评
2014/10/14 职场文书
奖学金申请书(范文)
2019/08/14 职场文书
Python实现Telnet自动连接检测密码的示例
2021/04/16 Python