RGameShow
@RGameShow
WEB-программист

Как отсортировать массив по конкретному ключу?

Как отсортировать массив по ключу PRICE ?

Array
(
    [0] => Array
        (
            [INFO] => Array
                (
                    [ID] => 1
                    [NAME] => NAME_1
                    [DESC] => DESC_1
                )

            [PRICE] => 0
        )

    [1] => Array
        (
            [INFO] => Array
                (
                    [ID] => 2
                    [NAME] => NAME_2
                    [DESC] => DESC_2
                )

            [PRICE] => 500
        )
    [2] => Array
        (
            [INFO] => Array
                (
                    [ID] => 3
                    [NAME] => NAME_3
                    [DESC] => DESC_3
                )

            [PRICE] => 1
        )
)
  • Вопрос задан
  • 113 просмотров
Решения вопроса 2
maksim92
@maksim92 Куратор тега PHP
Нашёл решение — пометь вопрос ответом!
Пример из документации:
$people = array( 
array("name"=>"Bob","age"=>8,"colour"=>"red"), 
array("name"=>"Greg","age"=>12,"colour"=>"blue"), 
array("name"=>"Andy","age"=>5,"colour"=>"purple")); 

var_dump($people); 

$sortArray = array(); 

foreach($people as $person){ 
    foreach($person as $key=>$value){ 
        if(!isset($sortArray[$key])){ 
            $sortArray[$key] = array(); 
        } 
        $sortArray[$key][] = $value; 
    } 
} 

$orderby = "name"; //change this to whatever key you want from the array 

array_multisort($sortArray[$orderby],SORT_DESC,$people); 

var_dump($people);


Output from first var_dump: 

[0]=> 
  array(3) { 
    ["name"]=> 
    string(3) "Bob" 
    ["age"]=> 
    int(8) 
    ["colour"]=> 
    string(3) "red" 
  } 
  [1]=> 
  array(3) { 
    ["name"]=> 

    string(4) "Greg" 
    ["age"]=> 
    int(12) 
    ["colour"]=> 
    string(4) "blue" 
  } 
  [2]=> 
  array(3) { 
    ["name"]=> 
    string(4) "Andy" 
    ["age"]=> 
    int(5) 
    ["colour"]=> 

    string(6) "purple" 
  } 
} 

Output from 2nd var_dump: 

array(3) { 
  [0]=> 
  array(3) { 
    ["name"]=> 
    string(4) "Greg" 
    ["age"]=> 
    int(12) 
    ["colour"]=> 
    string(4) "blue" 
  } 
  [1]=> 
  array(3) { 
    ["name"]=> 

    string(3) "Bob" 
    ["age"]=> 
    int(8) 
    ["colour"]=> 
    string(3) "red" 
  } 
  [2]=> 
  array(3) { 
    ["name"]=> 
    string(4) "Andy" 
    ["age"]=> 
    int(5) 
    ["colour"]=> 

    string(6) "purple" 
  }
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
andrewbess
@andrewbess
Magento developer at Atwix
Попробуй как-то так
usort($array, function($a, $b) {
    if ($a['PRICE'] == $b['PROCE']) {
        return 0;
    }
    return ($a['PRICE'] < $b['PRICE']) ? -1 : 1;
});


$array - твой массив.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы