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

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

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

PHP
千巷猫影 2018-10-23 21:55:57
$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;
查看完整描述

1 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

// 这个还是很容易想到, 好不好就不好说了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;
}


查看完整回答
反对 回复 2018-10-23
  • 1 回答
  • 0 关注
  • 2006 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信