我有一个数组:
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];
}
但不排序:(
答案 0 :(得分:1)
您的排序功能应该是
return $sizes[$a['symbol']] - $sizes[$b['symbol']];
参数$a
和$b
是数组内部的项,在本例中它们本身就是数组。你必须从里面抓取适当的元素来进行排序。