$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;}
慕桂英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);
添加回答
举报
0/150
提交
取消
