需求说明: 产品的一个变态需求,按照序号输入 又重复的输入序号,后输入的序号优先排前列。例如 1 23 3 4 ,那么第二个3 要放到第三的位置,第一个3放到第四个位置。排列的位置是:
1->1
2->2
3->3
4->3
5->4
之前有通过usort($dj_arr, array("setDjInfo", "arrDjCmp")); 自定义函数的字段排序,用在这里明显就是不符合要求了。这么变态的需求,以前没有见过啊。
$data[] = array('volume' => 'ee', 'sort' => 2);
$data[] = array('volume' => 'gg', 'sort' => 1);
$data[] = array('volume' => 'hh', 'sort' => 6);
$data[] = array('volume' => 'aa', 'sort' => 2);
$data[] = array('volume' => 'gegww', 'sort' => 6);
$data[] = array('volume' => 'comeon', 'sort' => 7);
$data[] = array('volume' => 'hchange', 'sort' => 7);
$data[] = array('volume' => 'ladywyh', 'sort' => 7);
$data[] = array('volume' => 'cyworld', 'sort' => 7);
// 取得列的列表
foreach ($data as $key => $row) {
$sort[$key] = $row['sort'];
$data[$key]['key'] = $key;
$vkey[$key] = $key;
}
// 将数据根据 sort 升序排列,根据 key降序排列
// 把 $data 作为最后一个参数,以通用键排序
array_multisort($sort, SORT_ASC,$vkey, SORT_DESC, $data);