2017-01-02 4 views
1

У меня есть массив как следующий, и я хочу заказать этот массив по возрастанию и убыванию по значению ключа «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'); 

Я хочу использовать этот восходящий массив и убывание.

+1

Что конкретно вы попробуйте из ссылочного вопроса? –

+0

@MichaelSacket Я использую эту функцию cmp ($ a, $ b) { if ($ a ['attack'] == $ b ['attack']) { return 0; } return ($ a ['attack'] <$ b ['attack'])? -1: 1; } uasort ($ data, 'cmp'); –

+0

Вам нужно заменить ключ 'attack' на' min_price'. –

ответ

0

Вы можете использовать новый комбинированный оператор сравнения (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']; 
           }); 

Надеется, что это поможет

0

вот пример сортировки

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

 Смежные вопросы

  • Нет связанных вопросов^_^