2010-09-27 55 views
7
Array 
(
[1] => Array 
    (
     [id] => 1 
     [sort] => 1 
    ) 

[3] => Array 
    (
     [id] => 3 
     [sort] => 3 
    ) 

[2] => Array 
    (
     [id] => 2 
     [sort] => 2 
    ) 

PHP数组排序使用内VAL

我怎么这么使用其内部“排序”重新排​​序键排序呢?即上面是这样的:

Array 
(
[1] => Array 
    (
     [id] => 1 
     [sort] => 1 
    ) 

[2] => Array 
    (
     [id] => 2 
     [sort] => 2 
    ) 

[3] => Array 
    (
     [id] => 3 
     [sort] => 3 
    ) 

+0

主要量的重复的:http://stackoverflow.com/search?q=php+sort(该死的,为什么最近这这样一个热门话题?) – 2010-09-27 13:39:35

+0

一般PHP .net有很多来自用户的真正有用的笔记,你是否浏览了排序页面,如果是的话,哪里出了问题?如果我们知道你已经尝试了什么以及你有什么问题,最好能帮助你。 http://php.net/manual/en/function.sort.php – Incognito 2010-09-27 13:52:01

+0

@dennis今年9月27日,我认为第一轮学校项目将到期。 – Incognito 2010-09-27 13:52:41

回答

0

事情是这样的:

uasort($array, 'compfunc'); 

function compfunc($a, $b) 
{ 
    return $a['sort'] - $b['sort']; 
} 
16

您可以使用usort与此对比功能:

function cmpBySort($a, $b) { 
    return $a['sort'] - $b['sort']; 
} 
usort($arr, 'cmpBySort'); 

或者你用array_multisort以及排序顺序的附加键值数组:

$keys = array_map(function($val) { return $val['sort']; }, $arr); 
array_multisort($keys, $arr); 

array_map这里与anonymous function被用于构建用于将数组值本身排序排序值的阵列。这样做的好处是需要为每对值调用np比较函数。

+0

这对我有用。谢谢。 – rottenoats 2015-06-09 14:22:30

3

事情是这样的:

usort($array, function (array $a, array $b) { return $a["sort"] - $b["sort"]; }); 
+0

该死的,被它殴打一英里... – 2010-09-27 13:37:55

+0

请删除这个重复的(和code-only)答案。我不会服务于SO读者。 – mickmackusa 2017-04-30 04:16:07