基于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语法速查表
Dec 06 PHP
一篇入门的php Class 文章
Apr 04 PHP
PHP STRING 陷阱原理说明
Jul 24 PHP
浅析php中抽象类和接口的概念以及区别
Jun 27 PHP
PHP里8个鲜为人知的安全函数分析
Dec 09 PHP
PHP统一页面编码避免乱码问题
Apr 09 PHP
php+mysql实现简单的增删改查功能
Jul 13 PHP
PHP正则表达式之捕获组与非捕获组
Nov 06 PHP
浅谈PHP中的
Apr 23 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
Oct 17 PHP
php7函数,声明,返回值等新特性介绍
May 25 PHP
Thinkphp 框架扩展之应用模式实现方法分析
Apr 27 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
Yii调试SQL的常用方法
2014/07/09 PHP
php专用数组排序类ArraySortUtil用法实例
2015/04/03 PHP
php关联数组快速排序的方法
2015/04/17 PHP
PHP自定义图片缩放函数实现等比例不失真缩放的方法
2016/08/19 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
设定php简写功能的方法
2019/11/28 PHP
ext读取两种结构的xml的代码
2008/11/05 Javascript
JavaScript全排列的六种算法 具体实现
2013/06/29 Javascript
jQuery事件用法实例汇总
2014/08/29 Javascript
对比分析json及XML
2014/11/28 Javascript
理解javascript回调函数
2014/12/28 Javascript
PHP配置文件php.ini中打开错误报告的设置方法
2015/01/09 PHP
javascript实现鼠标移到Image上方时显示文字效果的方法
2015/08/07 Javascript
JavaScript的removeChild()函数用法详解
2015/12/27 Javascript
浅析Jquery操作select
2016/12/13 Javascript
jQuery实现图片滑动效果
2017/03/08 Javascript
JS与jQuery判断文本框还剩多少字符可以输入的方法
2018/09/01 jQuery
vuex + axios 做登录验证 并且保存登录状态的实例
2018/09/16 Javascript
[59:59]EG vs IG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python通过colorama模块在控制台输出彩色文字的方法
2015/03/19 Python
进一步理解Python中的函数编程
2015/04/13 Python
python使用电子邮件模块smtplib的方法
2016/08/28 Python
python实现多线程抓取知乎用户
2016/12/12 Python
python如何在循环引用中管理内存
2018/03/20 Python
Python内置random模块生成随机数的方法
2019/05/31 Python
Python 中pandas索引切片读取数据缺失数据处理问题
2019/10/09 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
2019/11/08 Python
python 两种方法修改文件的创建时间、修改时间、访问时间
2020/09/26 Python
html5使用html2canvas实现浏览器截图的示例
2017/08/31 HTML / CSS
RetroStage德国:复古服装
2019/02/03 全球购物
房地产广告词大全
2014/03/19 职场文书
酒店开业庆典策划方案
2014/05/28 职场文书
结对共建工作方案
2014/06/02 职场文书
党校个人总结
2015/03/04 职场文书
2015年乡镇工作总结范文
2015/04/22 职场文书
React Fragment介绍与使用详解
2021/11/11 Javascript