有没有更好的方法来对包含各种语言的字符串的数组进行排序

Is there a better approach to sort an array that contains strings of various languages

问题:需要根据特定语言对包含字符串的数组进行排序,例如语言的原始名称。希腊语 (el),这样用希腊语写的名字将首先排序,然后是其他语言的名字。

输入:

$arLanguages = [
    'English',
    'Αγγλικά',
    'Русский',
    'Ρωσική',
    'Ελληνικά',
];

预期输出:

Array
(
    [0] => Αγγλικά
    [1] => Ελληνικά
    [2] => Ρωσική
    [3] => English
    [4] => Русский
)

我试过的:

setlocale(LC_COLLATE, 'el');
asort($arLanguages);
print_r($arLanguages);

结果:没有任何反应。

编辑:我的PHP版本是7.3。

编辑 1Simone 的解决方案不适用于中文和日文。我认为与多字节字符有关,或者因为中文和日文也使用拉丁字母。

尊敬的 SO 社区,如何以最佳方式解决所描述的问题?

感谢您的宝贵时间!

您可以使用Collator::sort

$arLanguages = [
    'English',
    'Αγγλικά',
    'Русский',
    'Ρωσική',
    'Ελληνικά',
];

$coll = collator_create( 'el' );
collator_asort( $coll, $arLanguages ); // to preserve indexes

print_r($arLanguages); //output Array ( [0] => Αγγλικά [1] => Ελληνικά [2] => Ρωσική [3] => English [4] => Русский )