使用区域设置对PHP数组进行排序?

时间:2017-04-04 15:59:19

标签: php setlocale array-multisort

是否可以使用区域设置对PHP数组进行排序?

这是设置:

我正在PHP中创建一个交互式排序列表。通过用户输入,可以使多个类别(列)中的一个指示排序(名称,住所等)。我通过使用array_multisort()函数来解决这个问题。

下一个障碍。该列表是瑞典语,用户希望瑞典语按字母顺序排列:abcdefghijklmnopqrstuvxyzåäö。现在,口译员将åäö排序为非字母,并将它们放在“a”之前。如何补救?

我在setlocale(LC_COLLATE, "sv_SV")函数中发现了一些分散的信息,但评论并不是很好,我无法理解它如何与array_multisort()一起使用。它可以?如果是的话,怎么样? php中还有另一种方式吗?

事情是,必须有某种方式 - 瑞典网站比比皆是,瑞典排序顺序适用。可以用php完成吗?

3 个答案:

答案 0 :(得分:1)

使用SORT_LOCALE_STRING作为array_multisort()函数的第三个参数。 PHP ducuments说:

SORT_LOCALE_STRING - 根据当前区域设置将项目作为字符串进行比较。它使用区域设置,可以使用setlocale()

进行更改

示例:

$result=array_multisort( $input_array, SORT_ASC, SORT_LOCALE_STRING);

答案 1 :(得分:0)

对不起。这不是我认为的问题。在我的代码中编写的文本被正确排序(只是ä在å之前被错误地排序,但这似乎是规范中的错误(?))。

无论如何,问题显然是字符编码。当从Contact Form 7数据库(Wordpress插件)获取文本时,问题就出现了。据推测它有另一种编码,需要转换。

非常感谢。

答案 2 :(得分:0)

使用collator_sortcollator_asort

<ng-container *ngIf="!isLoading && regions?.length">