如何在不使用collator方法的情况下按字母顺序显示以下数组字符串
$country = array('Ägypten','Afghanistan', 'Äquatorialguinea', 'Albanien');
我的代码是:
function compareASCII($a, $b) {
$a1 = iconv('UTF-8', 'ASCII//TRANSLIT', $a);
$b1 = iconv('UTF-8', 'ASCII//TRANSLIT', $b);
return strcmp($a1, $b1);
}
usort($country, 'compareASCII');
输出:
Array ( [0] => Ägypten [1] => Äquatorialguinea [2] => Afghanistan [3] => Albanien )
预期输出:
Array ( [0] => Afghanistan [1] => Ägypten [2] => Albanien [3] => Äquatorialguinea )
如何获得预期的输出?
感谢您提前!!!
答案 0 :(得分:1)
它可以手动(简单版本,可以扩展):
$country = array('Ägypten','Afghanistan', 'Äquatorialguinea', 'Albanien');
usort ($country,function($a,$b){
$a=str_replace(array('Ä','Ö','Ü'),array('A','O','U'),$a);
$b=str_replace(array('Ä','Ö','Ü'),array('A','O','U'),$b);
return strcmp($a,$b);
});
print_r($country);
//Result
//Array ( [0] => Afghanistan [1] => Ägypten [2] => Albanien [3] => Äquatorialguinea )