首先,我适当的区域设置为西班牙语:
setlocale(LC_ALL, 'es_ES');
这个数组保存的必须按字母顺序重新排序的语言列表。
$lang['ar'] = 'árabe';
$lang['fr'] = 'francés';
$lang['de'] = 'alemán';
所以我这样做:
asort($lang,SORT_LOCALE_STRING);
最终的结果是:
- 德国
- 法国
- 阿拉伯语
...它应该是:
- 阿拉伯语
- 德国
- 法国
该ASORT()函数发送一个字符排序列表的底部。 如何避免这一问题? 谢谢!
解决方案 链接通过@Sbls
function compareASCII($a, $b) {
$at = iconv('UTF-8', 'ASCII//TRANSLIT', $a);
$bt = iconv('UTF-8', 'ASCII//TRANSLIT', $b);
return strcmp($at, $bt);
}
uasort($lang, 'compareASCII');