2017-01-02 202 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($一個,$ B){ 如果($一個[ '攻擊'] == $ B [ '攻擊']){ 返回0; } 返回($一個[ '攻擊'] <$ B [ '攻擊'])? -1:1; } uasort($數據, 'CMP'); –

+0

您需要用'min_price'替換密鑰'attack'。 –

回答

0

你可以使用新的組合比較操作(AKA Spaceship)(自PHP-7):在announcement

// Integers 
echo 1 <=> 1; // 0 
echo 1 <=> 2; // -1 
echo 2 <=> 1; // 1 

更多信息。

所以,你可以寫:

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>"; 
?> 
相關問題