基于php实现随机合并数组并排序(原排序)
最近做了一个项目,其中有这样一个需求要实现,原有帖子列表A,现在需要在A中推广新业务B,那么需要在A列表中1:1混合B中的数据,随机混合,但是需要保持A和B两列原来的数据排序,具体详情请看下文。
原理
获知总共元素数量N;
for循环N次,取随机数;
根据随机数依次从头获取A或B的值,推入新数组中;
代码:
//随机合并两个数组元素,保持原有数据的排序不变(即各个数组的元素在合并后的数组中排序与自身原来一致)
functionshuffleMergeArray(){
$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);//输出数组
?>