PHP - 按数组键排序数组

时间:2018-06-01 05:35:08

标签: php arrays sorting

我在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

6 个答案:

答案 0 :(得分:0)

使用 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()函数根据值按升序对关联数组进行排序。

答案 1 :(得分:0)

使用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

答案 2 :(得分:0)

// 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');

答案 3 :(得分:0)

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

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 :(得分:0)

您可以使用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

答案 5 :(得分:0)

  

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