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

$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;


千巷猫影
浏览 2019回答 1
1回答

慕虎7371278

// 这个还是很容易想到, 好不好就不好说了function toFirst($data, $userid = 0) {    foreach($data as $key =>  $item) {        if ($item['userid'] == $userid) {            unset($data[$key]);             array_unshift($data, $item);            break;         }     }    return $data; }用usort可能会发一点function toFirst2($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)) {            return 0;         }        return in_array($a['userid'], $now) ? -1 : 1;     });    return $data; }
打开App,查看更多内容
随时随地看视频慕课网APP