如何使用数组中的值从0到10重新排序数组?

时间:2011-08-09 16:35:29

标签: php arrays sql-order-by

  

可能重复:
  Sorting a multidimensional array?

我有一个多维关联数组:

[book]=>{
            [names]=>{
                        [name]=>'thing1',
                        [age]=>'23',
                        [nOrder]=>'1'
                     },
                     {
                        [name]=>'thing2',
                        [age]=>'24',
                        [nOrder]=>'3'
                     },
                     {
                        [name]=>'thing3',
                        [age]=>'25',
                        [nOrder]=>'2'
                     }
        }

希望示例看起来没问题,基本上我需要按“nOrder”值中的任何内容重新排序“names”值中行的位置,使其顺序为1到3。

1 个答案:

答案 0 :(得分:2)

function cmp( $a, $b ) {
    return $a['nOrder'] > $b['nOrder'] ? 1 : -1;
}

usort( $book['names'], 'cmp' );

来自usort manual page

  

此函数将使用用户提供的比较函数按其值对数组进行排序。如果要排序的数组需要按一些非平凡的标准排序,则应使用此功能。

我们将cmp作为比较函数传递给usort(),它将使用该比较函数对$book['names']数组的元素进行排序。