$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; }
- 1 回答
- 0 关注
- 2006 浏览
添加回答
举报
0/150
提交
取消