【问题标题】:PHP: Sort Array by subvalue [duplicate]PHP:按子值排序数组[重复]
【发布时间】:2011-11-01 23:18:53
【问题描述】:

可能重复:
How to sort arrays inside an array?
Sort an array by a child array's value in PHP

我有一个如下所示的数组:

[0] => Array {
    [ID] => 1651,
    [DESCR] => "blabla",
    [SORTNR] => 1,
},
[1] => Array {
    [ID] => 456,
    [DESCR] => "bleble",
    [SORTNR] => 3,
},
[2] => Array {
    [ID] => 158,
    [DESCR] => "bliblablub",
    [SORTNR] => 2,
},

现在我想使用[SORTNR] 的值降序对子数组进行排序,所以它最终应该是这样的:

[1] => Array {
    [ID] => 456,
    [DESCR] => "bleble",
    [SORTNR] => 3,
},
[2] => Array {
    [ID] => 158,
    [DESCR] => "bliblablub",
    [SORTNR] => 2,
},
[0] => Array {
    [ID] => 1651,
    [DESCR] => "blabla",
    [SORTNR] => 1,
},

我怎样才能在 PHP 中正确地做到这一点?我现在尝试了一些东西四个小时,但我找不到任何好的解决方案....

谢谢帮助!

【问题讨论】:

    标签: php arrays sorting


    【解决方案1】:
    function cmp($a, $b) {
      if ($a['SORTNR'] == $b['SORTNR']) {
        return 0;
      }
      return ($a['SORTNR'] < $b['SORTNR']) ? -1 : 1;
    }
    
    uasort($arr, 'cmp');
    

    代码改编自PHP uasort() manual page

    【讨论】:

    • 为简洁起见,您可以在 cmp() 函数中执行 return $a['SORTNR'] - $b['SORTNR']
    【解决方案2】:

    如果您要排序的子值是可变的,您也可以考虑使用array_multisort()。请参见示例 #3:http://php.net/array_multisort

    【讨论】:

      猜你喜欢
      • 2017-08-01
      • 1970-01-01
      • 2013-03-11
      • 1970-01-01
      • 2011-01-29
      • 2011-05-29
      • 1970-01-01
      • 2012-07-06
      相关资源
      最近更新 更多