【问题标题】:PHP - sort array by array key [duplicate]PHP - 按数组键排序数组[重复]
【发布时间】:2018-11-11 04:44:10
【问题描述】:

我在 PHP 中有这个数组:

在 PHP API 中,我有这个数组,想按 custom_price 排序,但不知道如何实现 ..

Array
(
    [0] => Array
        (
            [id] => 1204
            [custom_price] => 33.1500
        )


    [1] => Array
        (
            [id] => 1199
            [custom_price] => 16.83
        )

    [2] => Array
        (
            [id] => 1176
            [custom_price] => 16.83
        )

    [3] => Array
        (
            [id] => 1173
            [custom_price] => 11.73
        )

    [4] => Array
        (
            [id] => 1170
            [custom_price] => 22.5
        )
)

我如何按 custom_price 从 .. 高到低 & 从低到高 .. 排序

【问题讨论】:

    标签: php arrays sorting


    【解决方案1】:

    你可以使用usort函数

    <?php 
    $array = array( 
                "0" => array (
                   "id" => 1204,
                   "custom_price" => 33.1500    
                ),
    
                "1" => array (
                   "id" => 1199,
                   "custom_price" => 20.83  
                ),
    
                "2" => array (
                   "id" => 1176,
                   "custom_price" => 19.83  
                )
             );
    
    usort($array, function($a, $b) {
        return $a['custom_price'] - $b['custom_price'];
    });
    echo "<pre>";
    print_r($array);
    

    check the desired output

    【讨论】:

      【解决方案2】:

      array_multisort()SORT_DESCSORT_ASC 一起使用

      <?php
      
          $MYarray=
          array(
          0 => array(
                 "id"=> 1204,
                 "custom_price"=> 33.1500
              ),
          1 =>  array(
                 "id"=> 1199,
                 "custom_price"=> 16.83
              ),
          2 => array(
                 "id"=> 1176,
                 "custom_price"=> 316.83
              ));
      
      
          $custom_price = array();
          foreach ($MYarray as $key => $row)
          {
              $custom_price[$key] = $row['custom_price'];
          }
      
          array_multisort($custom_price, SORT_DESC, $MYarray);
      
      
          var_dump($MYarray);
          ?>
      

      【讨论】:

        【解决方案3】:

        此解决方案可能会对您有所帮助。

        function sortByOrder($a, $b) {
            return $a['custom_price'] - $b['custom_price'];
        }
        
        usort($myArray, 'sortByOrder');
        

        或者

        function aasort (&$array, $key) {
            $sorter=array();
            $ret=array();
            reset($array);
            foreach ($array as $ii => $va) {
                $sorter[$ii]=$va[$key];
            }
            asort($sorter);
            foreach ($sorter as $ii => $va) {
                $ret[$ii]=$array[$ii];
            }
            $array=$ret;
        }
        
        aasort($your_array,"custom_price");
        

        这里是参考link

        【讨论】:

          【解决方案4】:
          // Descending order 
              function sortByDecOrder($a, $b) {
                  return $b['custom_price'] - $a['custom_price'];
              }
          
              usort($arr, 'sortByOrder');
          // Ascending order 
          function sortByAscOrder($a, $b) {
                  return $b['custom_price'] - $a['custom_price'];
              }
          
              usort($arr, 'sortByOrder');
          

          【讨论】:

            【解决方案5】:

            使用usort

            从高到低

            usort($input, function ($a, $b) {return $a['custom_price'] < $b['custom_price'];});
            print_r( $input );
            

            从低到高

            usort($input, function ($a, $b) {return $a['custom_price'] > $b['custom_price'];});
            print_r( $input );
            

            http://php.net/manual/en/function.usort.php

            【讨论】:

              【解决方案6】:

              使用 Ksort

              $age=array("1204"=>"33.1500","1199"=>"16.83","1176"=>"11.73");
              ksort($age);
              
              foreach($age as $x=>$x_value)
                 {
                  echo "Value=" . $x_value;
                  echo "<br>";
                 }
              

              输出

              Value=11.73
              Value=16.83
              Value=33.1500
              

              提示:使用 krsort() 函数根据键对关联数组进行降序排序。

              提示:使用 asort() 函数根据值对关联数组进行升序排序。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2012-02-19
                • 2017-08-01
                • 2012-07-06
                • 1970-01-01
                • 1970-01-01
                • 2023-01-19
                • 1970-01-01
                相关资源
                最近更新 更多