2013-08-06 18 views
0

排序陣列我有一個數組:PHP:通過自身的價值模式

array(1) { ["myarr"]=> array(5) { 
[0]=> array(2) { ["symbol"]=> string(6) "EUR" ["desc"]=> string(6) "da" } 
[1]=> array(2) { ["symbol"]=> string(6) "USD" ["desc"]=> string(6) "adad" } 
[2]=> array(2) { ["symbol"]=> string(6) "CHF" ["desc"]=> string(6) "das23" } 
[3]=> array(2) { ["symbol"]=> string(6) "GBP" ["desc"]=> string(6) "dd12" } 
[4]=> array(2) { ["symbol"]=> string(6) "NOR" ["desc"]=> string(6) "233" } 
    } 
} 

現在我需要進行排序的符號陣列:NOR,美元,歐元,瑞士法郎,英鎊

所以我寫了回調功能

uasort($myarr , 'sort_myarr') 



function sort_myarr($a, $b) { 

static $sizes = array('NOR' => 0, 'USD' => 1, 'EUR' => 2, 'CHF' => 3, 'GBP' => 4); 


return $sizes[$a] - $sizes[$b]; 
}  

但不排序:(

+0

這個數值是來自表嗎?如果是,哪個數據庫使用?你可以在查詢中完成它。 –

+0

你說你想用'symbol'來排序,但是你的代碼根本沒有提及'symbol':'return $ sizes [$ a ['symbol']] - $ sizes [$ b ['symbol']] ;'也許 –

+0

不是來自php數組 – jasne

回答

1

你的排序功能應該讀

return $sizes[$a['symbol']] - $sizes[$b['symbol']]; 

參數$a$b是來自數組內部的項目,在本例中它們是它們自己的數組。你必須從他們內部抓取適當的元素進行排序。