PHP - сортировка массива по ключу массива - PullRequest
0 голосов
/ 01 июня 2018

У меня есть этот массив в 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 голосов
/ 01 июня 2018

используйте array_multisort() с SORT_DESC и SORT_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);
    ?>
0 голосов
/ 01 июня 2018

Вы можете использовать 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);

проверить желаемый выход

0 голосов
/ 01 июня 2018

Это решение может помочь вам.

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

здесь ссылка ссылка

0 голосов
/ 01 июня 2018
// 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');
0 голосов
/ 01 июня 2018

Использование 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

0 голосов
/ 01 июня 2018

Использование 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 () для сортировки ассоциативного массива в порядке возрастания в соответствии со значением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...