2011-03-04 229 views
0

我有一個腳本可以從數據庫中獲取一些值。在PHP中對數組進行排序

在瓦爾的結構如下所示:

$dump["likes"] = 1234; 
$likes["data"][$i]["name"] = "ABCDEFG"; 

for($i=0;$i<=$max;$i++){ 
    $data[$i]["likes"] = $dump["likes"]; 
    $data[$i]["name"] = $likes["data"][$i]["name"]; 

} 

//Print sorted array here (highest value in "like" first) 

我只是需要一種方法來找出哪個條目最大的「喜歡」是:)

到目前爲止,我已經嘗試在array_multisort ,但它顯示我「不一致的大小」或一些錯誤...

感謝您的幫助!

編輯:

當我結束循環之外打印($數據),它看起來像這樣:

Array ([0] => Array ([likes] => 3485109 [name] => Google) [1] => Array ([likes] => 78535 [name] => Youtube) [2] => Array ([likes] => 2433041 [name] => Bing)) 

我想有一個這樣的數組:

Array ([0] => Array ([likes] => 3485109 [name] => Google) [1] => Array ([likes] => 2433041 [name] => Bing) [2] => Array ([likes] => 78535 [name] => Youtube)) 

//Sorted by "likes" 
+0

請始終引用確切的錯誤消息,以便人們可以幫助您。 – 2011-03-04 23:24:58

+3

我建議使用「ORDER BY」在數據庫查詢中進行排序,它更簡單,更乾淨,可能更快! – sled 2011-03-04 23:27:49

+0

這是不可能的,因爲$ dump [「likes」]實際上並不在數據庫中,但是從外部站點拉出來...請檢查編輯以獲取有關陣列結構的更多信息... – DonCroce 2011-03-04 23:30:03

回答

2

這應該是關鍵

function cmp($a, $b){ 
    if ($a['likes']>$b['likes']) 
    return 1; 
    else if ($a['likes']<$b['likes']) 
    return -1; 
    else return 0; 
} 
usort($data, 'cmp'); 
+0

一個字,偉大: )感謝Ivan的幫助! – DonCroce 2011-03-04 23:43:25