PHP:按自己的值模式排序数组

时间:2013-08-06 08:36:05

标签: php arrays sorting

我有一个数组:

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,USD,EUR,CHF,GBP

所以我写了回调函数

 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];
}     

但不排序:(

1 个答案:

答案 0 :(得分:1)

您的排序功能应该是

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

参数$a$b是数组内部的项,在本例中它们本身就是数组。你必须从里面抓取适当的元素来进行排序。