【问题标题】:How do I sort a multi-dimensional array ascending and descending?如何对多维数组进行升序和降序排序?
【发布时间】:2017-05-16 19:24:31
【问题描述】:

我有一个如下数组,我想按键“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');

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

【问题讨论】:

  • 您从引用的问题中具体尝试了什么?
  • @MichaelSacket 我使用这个函数 cmp($a, $b) { if ($a['attack'] == $b['attack']) { return 0; } 返回 ($a['attack']
  • 您需要将密钥 attack 替换为 min_price
  • @MichaelSacket 我用 min_price 替换了密钥攻击,但仍然无法正常工作
  • 好吧@dhanashri,我想,但我不想假设。你能用你正在使用的代码更新问题吗?

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


【解决方案1】:

这里是一个排序的例子

<?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>";
?> 

【讨论】:

    【解决方案2】:

    您可以使用新的组合比较运算符(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']; 
                                   });
    

    希望有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-30
      • 2021-08-24
      • 1970-01-01
      • 2020-06-06
      • 2020-11-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多