`
dennisbing
  • 浏览: 152533 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

二维数组按字段名排序

    博客分类:
  • PHP
 
阅读更多

需求说明: 产品的一个变态需求,按照序号输入 又重复的输入序号,后输入的序号优先排前列。例如  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);

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics