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

5年以前  |  阅读数:346 次  |  编程语言: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);                    //输出数组 
    ?> 
 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例