dmz社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2437|回复: 8

[功能实现] PHP随机合并数组并保持原排序算法

[复制链接]
  • TA的每日心情

    2024-11-19 20:46
  • 签到天数: 244 天

    [LV.8]以坛为家I

    4434

    主题

    1459

    帖子

    1万

    积分

    会|员

    Rank: 9Rank: 9Rank: 9

    积分
    10839
    发表于 2019-5-17 23:14:48 | 显示全部楼层 |阅读模式

    本站资源全部免费,回复即可查看下载地址!

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    场景
    原有帖子列表A,现需在A中推广新业务B,则需要在A列表中1:1混合B的数据,随机混合,但需保持A和B两列表原来的数据排序。具体参考下面示例的效果。
    原理
    • 获知总共元素数量N;
    • for循环N次,取随机数;
    • 根据随机数依次从头获取A或B的值,推入新数组中;
    代码:
    [PHP] 纯文本查看 复制代码
    //随机合并两个数组元素,保持原有数据的排序不变(即各个数组的元素在合并后的数组中排序与自身原来一致)
    function shuffleMergeArray($array1, $array2) {
        $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;
    }

    示例:
    [PHP] 纯文本查看 复制代码
    合并前的数组:
    $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',
    )

    回复

    使用道具 举报

    该用户从未签到

    46

    主题

    7983

    帖子

    1079

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    1079

    发表于 2019-5-18 12:41:20 | 显示全部楼层
    找到好贴不容易,我顶你了,谢了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20

    主题

    7854

    帖子

    996

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    996

    发表于 2019-5-24 07:44:02 | 显示全部楼层
    路过,支持一下啦
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    34

    主题

    7937

    帖子

    974

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    974

    发表于 2019-5-28 08:41:29 | 显示全部楼层
    正需要,支持楼主大人了!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    7704

    帖子

    1025

    积分

    技冠群雄

    Rank: 6Rank: 6

    积分
    1025

    发表于 2019-6-3 09:33:51 | 显示全部楼层
    相当不错,感谢无私分享精神!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20

    主题

    7940

    帖子

    1037

    积分

    荣誉会员

    积分
    1037

    发表于 2019-6-5 14:14:51 | 显示全部楼层
    找到好贴不容易,我顶你了,谢了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    57

    主题

    3528

    帖子

    630

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    630

    发表于 2019-6-16 10:20:41 | 显示全部楼层
    我是来刷分的,嘿嘿
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    3521

    帖子

    -6

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    -6

    发表于 2019-6-22 12:09:27 | 显示全部楼层
    看帖回帖是美德!:lol
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    26

    主题

    7770

    帖子

    1037

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    1037

    发表于 2019-6-23 19:42:09 | 显示全部楼层
    学习了,谢谢分享、、、
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|小黑屋|本站代理|dmz社区

    GMT+8, 2025-2-2 06:09 , Processed in 0.198435 second(s), 40 queries .

    Powered by Discuz! X3.4 Licensed

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表