如何解决如何在php中以不同语言西班牙语,法语,俄语等按字母顺序对数组进行排序?
在StackOverflow for PHP中建议的传统字母排序算法可以很好地按英语字母顺序进行排序,但是对于其他具有不同字母顺序甚至符号的语言,常规的排序算法无法正常工作。例如:
<?php
$palabras = ['áncora','avión','esperanza','élite','perro','niña','nina','ñaña'];
//Traditional sorting method
sort($palabras);
var_dump($palabras);
/*
returns an inadequate order:
array(8) {
[0]=>
string(6) "avión"
[1]=>
string(9) "esperanza"
[2]=>
string(4) "nina"
[3]=>
string(5) "niña"
[4]=>
string(5) "perro"
[5]=>
string(7) "áncora"
[6]=>
string(6) "élite"
[7]=>
string(6) "ñaña"
}
*/
如何以简单的方式对这些数组进行排序?
解决方法
最简单的方法是使用在PHP中开发的非常有用的Collator类用于此明确目的。它已经为多种语言和字母预先编程了足够的排序算法。
这是如何使用它的示例:
<?php
$palabras = ['áncora','avión','esperanza','élite','perro','niña','nina','ñaña'];
//Make a Collator object with the locale code of the language to sort.
$collator = new Collator('es_ES');
//Use Collator::sort() instead of sort() [returns a numerical array];
//or Collator::asort() instead of asort [maintains the keys of an associative array].
$collator->sort($palabras,Collator::SORT_REGULAR);
var_dump($palabras);
/*
returns:
array(8) {
[4]=>
string(7) "áncora"
[3]=>
string(6) "avión"
[0]=>
string(6) "élite"
[7]=>
string(9) "esperanza"
[2]=>
string(4) "nina"
[1]=>
string(5) "niña"
[6]=>
string(6) "ñaña"
[5]=>
string(5) "perro"
}
*/
您可以在此处查看文档:
课程:https://www.php.net/manual/en/class.collator.php
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。