基于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计数器的实现代码
Jun 08 PHP
解析php扩展php_curl.dll不加载的解决方法
Jun 26 PHP
PHP仿博客园 个人博客(1) 数据库与界面设计
Jul 05 PHP
PHP面向对象教程之自定义类
Jun 10 PHP
thinkphp的URL路由规则与配置实例
Nov 26 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
Feb 15 PHP
php实现批量修改文件名称的方法
Jul 23 PHP
PHP获取文件扩展名的方法实例总结
Jun 10 PHP
Laravel网站打开速度优化的方法汇总
Jul 16 PHP
yii2中LinkPager增加总页数和总记录数的实例
Aug 28 PHP
windows环境下使用Composer安装ThinkPHP5
May 18 PHP
php 多继承的几种常见实现方法示例
Nov 18 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查看当前Session的ID实例
2015/03/16 PHP
php修改上传图片尺寸的方法
2015/04/14 PHP
Codeigniter的dom类用法实例
2015/06/26 PHP
js利用div背景,做一个竖线的效果。
2008/11/22 Javascript
Javascript中定义方法的另类写法(批量定义js对象的方法)
2011/02/25 Javascript
JavaScript创建一个欢迎cookie弹出窗实现代码
2013/03/15 Javascript
js鼠标及对象坐标控制属性详细解析
2013/12/14 Javascript
页面图片浮动左右滑动效果的简单实现案例
2014/02/10 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
2014/04/16 Javascript
对象题目的一个坑 理解Javascript对象
2015/12/22 Javascript
javascript insertAfter()定义与用法示例
2016/07/25 Javascript
浅谈js多维数组和hash数组定义和使用
2016/07/27 Javascript
nodeJs链接Mysql做增删改查的简单操作
2017/02/04 NodeJs
vue实现验证码按钮倒计时功能
2018/04/10 Javascript
vue.js提交按钮时进行简单的if判断表达式详解
2018/08/08 Javascript
javascript实现京东登录显示隐藏密码
2020/08/02 Javascript
[02:30]DOTA2英雄基础教程 暗影恶魔
2013/12/17 DOTA
Python中if __name__ == '__main__'作用解析
2015/06/29 Python
Python内建函数之raw_input()与input()代码解析
2017/10/26 Python
解决python3中解压zip文件是文件名乱码的问题
2018/03/22 Python
PyQt5 加载图片和文本文件的实例
2019/06/14 Python
python 并发编程 阻塞IO模型原理解析
2019/08/20 Python
Python开发之pip安装及使用方法详解
2020/02/21 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
2020/06/08 Python
Python如何创建装饰器时保留函数元信息
2020/08/07 Python
5 分钟读懂Python 中的 Hook 钩子函数
2020/12/09 Python
CSS3 border-image详解、应用及jQuery插件
2011/08/29 HTML / CSS
软件测试面试题
2015/10/21 面试题
办理信用卡工作证明
2014/01/11 职场文书
幼儿园教师备课制度
2014/01/12 职场文书
致1500米运动员广播稿
2014/02/07 职场文书
生物技术专业求职信
2014/06/10 职场文书
2015年教师节贺卡寄语
2015/03/24 职场文书
学习弘扬焦裕禄精神心得体会
2016/01/23 职场文书
vue数据字典取键值项目的字典问题
2022/04/12 Vue.js
Alexa停服!网站排名将何去何从?目前还没有替代品。
2022/04/15 杂记