PHP - 如何通过单个键对数组内的数组进行排序

时间:2012-05-07 09:36:15

标签: php arrays multidimensional-array sorting

  

可能重复:
  PHP sort multidimensional array by value

我看过questions with similar titles并找不到我的问题的答案。我也无法弄清楚如何在我的问题中实施asortusort函数。

所以我有一个数组:

array
{
   array
   {
      'name' => 'name1',
      'price' => '100',
      'grade' => '4.4'
   },
   array
   {
      'name' => 'name16',
      'price' => '12',
      'grade' => '1.2'
   },
   array
   {
      'name' => 'name3',
      'price' => '143',
      'grade' => '2.4'
   }
}

有没有办法按namepricegrade订购此数组,以便输出例如:(由 name排序

array
{
   array
   {
      'name' => 'name1',
      'price' => '100',
      'grade' => '4.4'
   },
   array
   {
      'name' => 'name3',
      'price' => '143',
      'grade' => '2.4'
   },
   array
   {
      'name' => 'name16',
      'price' => '12',
      'grade' => '1.2'
   }
}

1 个答案:

答案 0 :(得分:4)

usort与PHP.net#4的例子使用闭包来排序多维数组:

function build_sorter($key) {
    return function ($a, $b) use ($key) {
        return strnatcmp($a[$key], $b[$key]);
    };
}

usort($array, build_sorter('name'));
usort($array, build_sorter('price'));
usort($array, build_sorter('grade'));