基于php实现随机合并数组并排序(原排序)

 更新时间:2015年11月26日 15:47:45   作者:Shocker  
最近做了一个项目,其中有这样一个需求要实现,原有帖子列表A,现在需要在A中推广新业务B,那么需要在A列表中1:1混合B中的数据,随机混合,但是需要保持A和B两列原来的数据排序,本篇文章给大家介绍基于php实现随机合并数组并排序(原排序),需要的朋友参考下

最近做了一个项目,其中有这样一个需求要实现,原有帖子列表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);                    //输出数组 
?> 

相关文章

  • Laravel 5 学习笔记

    Laravel 5 学习笔记

    本文记录的是个人在学习实用laravel5的过程中遇到的几个重点的地方,也是最容易犯错的地方,这里记录下来,分享给大家。
    2015-03-03
  • stripos函数知识点实例分享

    stripos函数知识点实例分享

    在本篇内容中我们给大家分享了关于stripos函数知识点实例内容,有需要的朋友们跟着学习下。
    2019-02-02
  • destoon实现调用自增数字从1开始的方法

    destoon实现调用自增数字从1开始的方法

    这篇文章主要介绍了destoon实现调用自增数字从1开始的方法,很有实用价值的一个技巧,需要的朋友可以参考下
    2014-08-08
  • Yii使用Captcha验证码的方法

    Yii使用Captcha验证码的方法

    这篇文章主要介绍了Yii使用Captcha验证码的方法,结合实例形式分析了Yii使用Captcha验证码的MVC三层具体实现技巧,需要的朋友可以参考下
    2015-12-12
  • Laravel框架实现抢红包功能示例

    Laravel框架实现抢红包功能示例

    这篇文章主要介绍了Laravel框架实现抢红包功能,结合具体实例形式分析了Laravel框架实现抢红包的相关原理、步骤、功能实现技巧与操作注意事项,需要的朋友可以参考下
    2019-10-10
  • PHP大文件分片上传的实现方法

    PHP大文件分片上传的实现方法

    在网站开发中,经常会有上传文件的需求,有的文件size太大直接上传,经常会导致上传过程中耗时太久,大量占用带宽资源,因此有了分片上传。接下来通过本文给大家介绍PHP大文件分片上传的实现方法,需要的朋友可以参考下
    2018-10-10
  • ThinkPHP之foreach标签使用概述

    ThinkPHP之foreach标签使用概述

    这篇文章主要介绍了ThinkPHP之foreach标签的使用,需要的朋友可以参考下
    2014-06-06
  • ThinkPHP使用Smarty第三方插件方法小结

    ThinkPHP使用Smarty第三方插件方法小结

    这篇文章主要介绍了ThinkPHP使用Smarty第三方插件方法,结合实例形式总结分析了ThinkPHP使用Smarty模板的具体步骤与相关注意事项,需要的朋友可以参考下
    2016-03-03
  • PHP的关于变量和日期处理的一些面试题目整理

    PHP的关于变量和日期处理的一些面试题目整理

    这篇文章主要介绍了PHP的关于变量和日期处理的一些面试题目整理,也是PHP入门学习中的基础知识,需要的朋友可以参考下
    2015-08-08
  • PHP如何实现跨域

    PHP如何实现跨域

    这篇文章主要介绍了PHP如何实现跨域的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下
    2016-05-05

最新评论