基于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中使用Oracle数据库(4)
Oct 09 PHP
PHP+AJAX实现无刷新注册(带用户名实时检测)
Jan 02 PHP
php 连接mssql数据库 初学php笔记
Mar 01 PHP
优化php效率,提高php性能的一些方法
Mar 24 PHP
php正则表达匹配中文问题分析小结
Mar 25 PHP
php笔记之:有规律大文件的读取与写入的分析
Apr 26 PHP
解析php中array_merge与array+array的区别
Jun 21 PHP
使用php统计字符串中中英文字符的个数
Jun 23 PHP
在Mac OS上自行编译安装Apache服务器和PHP解释器
Dec 24 PHP
PHP下使用mysqli的函数连接mysql出现warning: mysqli::real_connect(): (hy000/1040): ...
Feb 14 PHP
PHP生成制作验证码的简单实例
Jun 12 PHP
Yii2中Restful API原理实例分析
Jul 25 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
WINXP下apache+php4+mysql
2006/11/25 PHP
PHP 操作文件的一些FAQ总结
2009/02/12 PHP
PHP-CGI进程CPU 100% 与 file_get_contents 函数的关系分析
2011/08/15 PHP
php xml常用函数的集合(比较详细)
2013/06/06 PHP
php mb_substr()函数截取中文字符串应用示例
2014/07/29 PHP
thinkphp模板继承实例简述
2014/11/26 PHP
php可应用于面包屑导航的迭代寻找家谱树实现方法
2015/02/02 PHP
PHP入门教程之自定义函数用法详解(创建,调用,变量,参数,返回值等)
2016/09/11 PHP
基于php解决json_encode中文UNICODE转码问题
2020/11/10 PHP
用php实现分页效果的示例代码
2020/12/10 PHP
扩展jQuery 键盘事件的几个基本方法
2009/10/30 Javascript
javascript读取Xml文件做一个二级联动菜单示例
2014/03/17 Javascript
jQuery中Ajax的get、post等方法详解
2015/01/20 Javascript
JavaScript中使用Math.PI圆周率属性的方法
2015/06/14 Javascript
JS选取DOM元素的简单方法
2016/07/08 Javascript
AngularJS中的API(接口)简单实现
2016/07/28 Javascript
JavaScript实现自动跳转文本功能
2017/05/25 Javascript
js闭包学习心得总结
2018/04/17 Javascript
Bootstrap table表格初始化表格数据的方法
2018/07/25 Javascript
Vue组件之单向数据流的解决方法
2018/11/10 Javascript
详解NodeJs项目 CentOs linux服务器线上部署
2019/09/16 NodeJs
js实现简单的贪吃蛇游戏
2020/04/23 Javascript
vue mvvm数据响应实现
2020/11/11 Javascript
Python3.5.3下配置opencv3.2.0的操作方法
2018/04/02 Python
PyTorch的自适应池化Adaptive Pooling实例
2020/01/03 Python
解决ROC曲线画出来只有一个点的问题
2020/02/28 Python
基于Python+QT的gui程序开发实现
2020/07/03 Python
html5视频播放_动力节点Java学院整理
2017/07/13 HTML / CSS
html5指南-3.如何实现html元素拖拽功能
2013/01/07 HTML / CSS
介绍一下JMS编程步骤
2015/09/22 面试题
教师岗位职责
2013/11/17 职场文书
2014年情人节活动方案
2014/02/16 职场文书
置业顾问岗位职责
2014/03/02 职场文书
大学生党员承诺书
2014/05/20 职场文书
诚实守信演讲稿
2014/09/01 职场文书
教师师德承诺书2016
2016/03/25 职场文书