基于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利用COM对象访问SQLServer、Access
Oct 09 PHP
PHP4实际应用经验篇(4)
Oct 09 PHP
php 调试利器debug_print_backtrace()
Jul 23 PHP
php一个找二层目录的小东东
Aug 02 PHP
php读取excel文件的简单实例
Aug 26 PHP
PHP合并静态文件详解
Nov 14 PHP
ioncube_loader_win_5.2.dll的错误解决方法
Jan 04 PHP
php实现curl模拟ftp上传的方法
Jul 29 PHP
php is_executable判断给定文件名是否可执行实例
Sep 26 PHP
PHP中大括号'{}'用法实例总结
Feb 08 PHP
PHP对称加密算法(DES/AES)类的实现代码
Nov 14 PHP
PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】
May 06 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的面向对象编程
2006/10/09 PHP
PHP n个不重复的随机数生成代码
2009/06/23 PHP
PHP移动文件指针ftell()、fseek()、rewind()函数总结
2014/11/18 PHP
mysql_connect localhost和127.0.0.1的区别(网络层阐述)
2015/03/26 PHP
php session的锁和并发
2016/01/22 PHP
magento后台无法登录解决办法的两种方法
2016/12/09 PHP
php实现的mysqldb读写分离操作类示例
2017/02/07 PHP
js 程序执行与顺序实现详解
2013/05/13 Javascript
EXTjs4.0的store的findRecord的BUG演示代码
2013/06/08 Javascript
实例分析javascript中的call()和apply()方法
2014/11/28 Javascript
jquery form表单获取内容以及绑定数据
2016/02/24 Javascript
基于Node.js + WebSocket打造即时聊天程序嗨聊
2016/11/29 Javascript
JavaScript注入漏洞的原理及防范(详解)
2016/12/04 Javascript
AngularJS中run方法的巧妙运用
2017/01/04 Javascript
自带气泡提示的vue校验插件(vue-verify-pop)
2017/04/07 Javascript
微信小程序实现图片轮播及文件上传
2017/04/07 Javascript
详解Vue如何支持JSX语法
2017/11/10 Javascript
vue中element组件样式修改无效的解决方法
2018/02/03 Javascript
使用angularjs.foreach时return的问题解决
2018/09/30 Javascript
nodejs读取图片返回给浏览器显示
2019/07/25 NodeJs
解决layui的radio属性或别的属性没显示出来的问题
2019/09/26 Javascript
js、jquery实现列表模糊搜索功能过程解析
2020/03/27 jQuery
Python字符串拼接、截取及替换方法总结分析
2016/04/13 Python
python的dataframe转换为多维矩阵的方法
2018/04/11 Python
python 实现return返回多个值
2019/11/19 Python
Python list运算操作代码实例解析
2020/01/20 Python
使用matplotlib动态刷新指定曲线实例
2020/04/23 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
2021/03/02 Python
英国打印机墨盒销售网站:Ink Factory
2019/10/07 全球购物
在购买印度民族服饰:Soch
2020/09/15 全球购物
卫生系统先进事迹
2014/05/13 职场文书
和睦家庭事迹
2014/05/14 职场文书
中国梦演讲稿范文
2014/08/28 职场文书
2015暑假社会调查报告
2015/07/13 职场文书
Mysql Show Profile
2021/04/05 MySQL
剧场版《转生恶役只好拔除破灭旗标》公开最新视觉图 2023年上映
2022/04/02 日漫