php数组高级操作【取前几个、多维排序、随机位置插入新值】
本文记录php的一些对数组的高级操作方法
1,取前几个
array_slice($array,0,3);//数组+起始位置+长度
———————————————————-
2,多维数组排序
比如现在有一个多维数组如下:
$array[]=array(‘paixu’=>1,’value’=>array(‘id’=>1,’title’=>’百度’));
$array[]=array(‘paixu’=>9,’value’=>array(‘id’=>2,’title’=>’腾讯’));
$array[]=array(‘paixu’=>8,’value’=>array(‘id’=>3,’title’=>’新浪’));
实际上我最终需要的数组格式是:
$resultArray=array(
array(‘id’=>1,’title’=>’百度’),
array(‘id’=>3,’title’=>’新浪’),
array(‘id’=>2,’title’=>’腾讯’)
)
即按照$array中的key为paixu来排序,代码如下:
foreach($arrayas $key=>$row) {
$paixu[$key]=$row[‘paixu’];
}
array_multisort($paixu,SORT_ASC,$array);
foreach($toplist as $key=>$row) {
$resultArray[]=$row[‘value’];
}
$resultArray为最终所得数组
———————————————————-
3,随机位置插入新数组
现在有2个数组,我希望实现的功能为:
取第一个数组的前3位聚合一个临时数组为最终数组
这个临时数组为第2个数组中随机位置插入第一个数字的后3位(循环)
实现代码如下:
$randtoplist=array(
array(‘id’=>1,’title’=>’百度’),
array(‘id’=>2,’title’=>’谷歌’),
array(‘id’=>3,’title’=>’新浪’),
array(‘id’=>4,’title’=>’网易’),
array(‘id’=>5,’title’=>’36kr’),
array(‘id’=>6,’title’=>’腾讯’),
array(‘id’=>7,’title’=>’360’)
);
$count_randtoplist=count($randtoplist);
$randtoplist_pre_three=array_slice($randtoplist,0,3);
$randtoplist_after_three=array_slice($randtoplist,3,$count_randtoplist);
//将除了$randtoplist以外的先聚合
$result=array(
array(‘id’=>11,’title’=>’google’),
array(‘id’=>12,’title’=>’apple’),
array(‘id’=>13,’title’=>’godaddy’),
array(‘id’=>14,’title’=>’新网’),
array(‘id’=>15,’title’=>’万网’),
array(‘id’=>16,’title’=>’柒帮’),
array(‘id’=>17,’title’=>’新网互联’)
);
$count_result=count($result);
//将3条以后的记录插入到$result
foreach($randtoplist_after_three as $k=>$v) {
array_splice($result,mt_rand(0,$count_result),0,array($v));
$count_result++;
}
//最后将前3条聚合,形成最终的$result
$result=array_merge($randtoplist_pre_three,$result);
近期评论