2011-12-11 77 views
0

在這裏,在PHP中的數組是我的陣列,我們稱之爲$arr排序的關鍵

Array ([0] => Array ([post] => 159 [city] => Denver [country] => [state] => Colorado) 
     [1] => Array ([post] => 165 [city] => Miami [country] => United States [state] => Florida) 
     [2] => Array ([post] => 172 [city] => East Rutherford [country] => United States [state] => New Jersey)) 

我想解決這陣升序排列的關鍵「城市」這樣的陣列將是:

Array ([0] => Array ([post] => 159 [city] => Denver [country] => [state] => Colorado) 
     [2] => Array ([post] => 172 [city] => East Rutherford [country] => United States [state] => New Jersey) 
     [1] => Array ([post] => 165 [city] => Miami [country] => United States [state] => Florida)) 

然後我想通過國家重點值按升序排列也進行排序,以便它看起來就像這樣:

Array ([0] => Array ([post] => 159 [city] => Denver [country] => [state] => Colorado) 
     [1] => Array ([post] => 165 [city] => Miami [country] => United States [state] => Florida 
     [2] => Array ([post] => 172 [city] => East Rutherford [country] => United States [state] => New Jersey)) 
+0

由國家名稱或主要國家.. – punit

+0

的國家重點 –

+0

其實很抱歉,我想通過市重點 –

回答

0

杉木ST存儲在一個變量數組然後運行循環

$fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple"); 
ksort($fruits); 
foreach ($fruits as $key => $val) { 
    echo "$key = $val\n"; 
} 

的輸出將是 一個=橙 B =香蕉 C =蘋果 d =檸檬

+0

當你將它切換到完全不同的陣列時,這對我來說沒有任何意義。我想使用我有的數組,並按照城市關鍵字按升序排序... –

+0

但是,這不讓我按城市鍵或州鍵排序。我希望能夠按鍵排序。 –

0

嘗試此,假設如果$ ARR是你的數組比

foreach($arr as $k=>$v): 
ksort($v); 
endforeach; 

print_r($arr); 
+0

但這不是讓我按城市鍵或州鍵排序。我希望能夠按鍵排序。 –

+0

但是ksort按鍵排序你的數組,你能給我更多關於你想要的exaclty的信息嗎? – punit

+0

punit - 我得到了你在例子中看到的上面的數組。我希望能夠顯示使用KEY「城市」對數組進行排序的結果,而不是我希望能夠通過KEY「狀態」進行排序。 –

1

你需要使用帶回調的usort。

function my_array_sort_callback($a, $b) { 
    return (strcmp ($a ['city'], $b ['city'])) 
} 

usort ($array, "my_array_sort_callback"); 
+0

「解析錯誤:語法錯誤,意外T_FUNCTION」 –

+0

@ Jeff'Digi'Lange:匿名函數只能在PHP 5.3及更高版本。你必須創建一個新的函數並使用它(查看usort文檔)。我已經添加了答案。 – Bluewind

0

usort ($array, function ($a, $b) { 
    return (strcmp ($a ['city'], $b ['city'])); 
}); 

匿名函數僅在PHP 5.3所以如果你使用的東西,舊的回調移動到一個新的功能工作會說的答案是在http://php.net/manual/en/function.array-multisort.php

0

下面是解決您的問題的解決方案:

<?php 

$arr = array(
    array("posts"=>323, "city"=>"london"), 
    array("posts"=>223, "city"=>"birmingham"), 
    array("posts"=>255, "city"=>"norwich"), 
    array("posts"=>13, "city"=>"manchester"), 
    array("posts"=>23, "city"=>"liverpool"), 
); 

function cmp($a, $b) 
{ 
     return ($a["posts"] >= $b["posts"]); 
} 


usort($arr, "cmp"); 

print_r($arr); 
?>