如何对多维数组进行升序和降序排序?

时间:2017-01-02 17:37:57

标签: php arrays sorting multidimensional-array php-7

我有一个如下数组,我想按键#34; min_price"的顺序对该数组进行升序和降序排序。我试过,我跟着this link仍然无法正常工作。任何帮助将不胜感激。

这是数组:

    Array
    (
        [0] => Array
            (
                [property_id] => 116 
                [min_price] => 3487
            )

        [1] => Array
            (
                [property_id] => 131
                [min_price] => 3035
            )

        [2] => Array
            (
                [property_id] => 171
                [min_price] => 7999
            )
    )

      function cmp($a, $b) {
    if ($a['min_price'] == $b['min_price']) {
        return 0;
    }
    return ($a['min_price'] < $b['min_price']) ? -1 : 1;
} 
uasort($data, 'cmp');

我想使用这个数组升序和降序。

2 个答案:

答案 0 :(得分:0)

您可以使用新的组合比较运算符(AKA Spaceship)(自php-7起):

// Integers
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1

announcement中的更多信息。

所以你可以写:

usort($Array, function($a, $b) {
                                 return $a['min_price'] <=> $b['min_price']; 
                               });

希望这个帮助

答案 1 :(得分:0)

这是一个排序的例子

<?php
  $array = array(
  0 =>array(
      'name' => 'Rnukir',
      'total' => '1'),
  1 => array(
      'name' => 'Arnesista',
      'total' => '2'),
  2 => array(
      'name' => 'Omas',
      'total' => '3'),
  3 => array(
      'name' => 'John',
      'total' => '4')
);
foreach ($array as $key => $row) {
    $name[$key]  = $row['name'];
    $total[$key] = $row['total'];
}
 print_r($total);

 array_multisort($total, SORT_DESC, $array);
//  array_multisort($total, SORT_DESC, $name, SORT_ASC $array);
echo "<pre>";
  print_r($array);
echo "</pre>";
?>