基于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);//输出数组 ?>