基于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 相关文章推荐
PHP4之真OO
Oct 09 PHP
从一个不错的留言本弄的mysql数据库操作类
Sep 02 PHP
PHP最常用的2种设计模式工厂模式和单例模式介绍
Aug 14 PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
Jul 25 PHP
一个经典的PHP文件上传类分享
Nov 18 PHP
php微信公众开发之获取周边酒店信息的方法
Dec 22 PHP
yii分页组件用法实例分析
Dec 28 PHP
PHP使用递归算法无限遍历数组示例
Jan 13 PHP
关于php 高并发解决的一点思路
Apr 16 PHP
PHP多进程编程之僵尸进程问题的理解
Oct 15 PHP
tp5(thinkPHP5)框架实现多数据库查询的方法
Jan 10 PHP
PHP从零开始打造自己的MVC框架之路由类实现方法分析
Jun 03 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 字符串替换的方法
2012/01/10 PHP
淘宝ip地址查询类分享(利用淘宝ip库)
2014/01/07 PHP
PHP实现数组递归转义的方法
2014/08/28 PHP
用JavaScript脚本实现Web页面信息交互
2006/12/21 Javascript
JS 控制CSS样式表
2009/08/20 Javascript
Jquery实现无刷新DropDownList联动实现代码
2010/03/08 Javascript
javascript自执行函数之伪命名空间封装法
2010/12/25 Javascript
JQuery循环滚动图片代码
2011/12/08 Javascript
浅析onsubmit校验表单时利用ajax的return false无效问题
2013/07/10 Javascript
JavaScript中Math对象方法使用概述
2014/01/02 Javascript
js实现仿百度汽车频道选择汽车图片展示实例
2015/05/06 Javascript
手机开发必备技巧:javascript及CSS功能代码分享
2015/05/25 Javascript
NodeJS中的MongoDB快速入门详细教程
2016/11/11 NodeJs
NodeJS自定义模块写法(详解)
2017/06/27 NodeJs
vue2.0 如何把子组件的数据传给父组件(推荐)
2018/01/15 Javascript
Angular.JS读取数据库数据调用完整实例
2019/07/02 Javascript
Vue切换Tab动态渲染组件的操作
2020/09/21 Javascript
ant-design-vue中的select选择器,对输入值的进行筛选操作
2020/10/24 Javascript
如何安装并使用conda指令管理python环境
2019/07/10 Python
在django中图片上传的格式校验及大小方法
2019/07/28 Python
python调用Matplotlib绘制分布点图
2019/10/18 Python
python通过链接抓取网站详解
2019/11/20 Python
使用PyTorch训练一个图像分类器实例
2020/01/08 Python
Python接口开发实现步骤详解
2020/04/26 Python
Django中Aggregation聚合的基本使用方法
2020/07/09 Python
python 从list中随机取值的方法
2020/11/16 Python
餐饮业创业计划书范文
2014/01/06 职场文书
行政专员的岗位职责
2014/03/10 职场文书
奥巴马就职演讲稿
2014/05/15 职场文书
英语专业毕业生求职信
2014/05/24 职场文书
2014幼儿园大班工作总结
2014/11/10 职场文书
大连导游词
2015/02/12 职场文书
Python中os模块的简单使用及重命名操作
2021/04/17 Python
PyTorch梯度裁剪避免训练loss nan的操作
2021/05/24 Python
tp5使用layui实现多个图片上传(带附件选择)的方法实例
2021/11/17 PHP
Redis主从复制操作和配置详情
2022/09/23 Redis