为了账号安全,请及时绑定邮箱和手机立即绑定

怎样把数组中的某个元素提前到第一个位置

怎样把数组中的某个元素提前到第一个位置

www说 2019-05-12 12:24:44
$a=[['userid'=>'2',name='z'],['userid'=>'1',name='l'],['userid'=>'4',name='w'],['userid'=>'3',name='h'],];怎样把userid=>4,这行提前到第一个位置。变成$a=[['userid'=>'4',name='w'],['userid'=>'2',name='z'],['userid'=>'1',name='l'],['userid'=>'3',name='h'],];想实现的就是,选中项放到第一位,前台列表太长了,方便用户看到选中了哪个。找到一个别人写的,他好像是把最后一个拿到最前面,貌似不行。$a=array('a','b','c');array_unshift($a,array_pop($a));var_dump($a);die;
查看完整描述

2 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

//这个还是很容易想到,好不好就不好说了
functiontoFirst($data,$userid=0){
foreach($dataas$key=>$item){
if($item['userid']==$userid){
unset($data[$key]);
array_unshift($data,$item);
break;
}
}
return$data;
}
用usort可能会发一点
functiontoFirst2($data,$now=[]){
usort($data,function($a,$b)use($now){
if(in_array($a['userid'],$now)&&in_array($b['userid'],$now)||
!in_array($a['userid'],$now)&&!in_array($b['userid'],$now)){
return0;
}
returnin_array($a['userid'],$now)?-1:1;
});
return$data;
}
                            
查看完整回答
反对 回复 2019-05-12
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

$a=[
['userid'=>'1','name'=>'l'],
['userid'=>'2','name'=>'z'],
['userid'=>'4','name'=>'w'],
['userid'=>'3','name'=>'h'],
];
foreach($aas$key=>$val){
if($val['userid']==4){
$info=$val;
unset($a[$key]);
}
}array_unshift($a,$info);echo'
';print_r($a);
                            
查看完整回答
反对 回复 2019-05-12
  • 2 回答
  • 0 关注
  • 2035 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号