$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 關注
- 2042 瀏覽
添加回答
舉報
0/150
提交
取消