是否可以使用区域设置对PHP数组进行排序?
这是设置:
我正在PHP中创建一个交互式排序列表。通过用户输入,可以使多个类别(列)中的一个指示排序(名称,住所等)。我通过使用array_multisort()
函数来解决这个问题。
下一个障碍。该列表是瑞典语,用户希望瑞典语按字母顺序排列:abcdefghijklmnopqrstuvxyzåäö。现在,口译员将åäö排序为非字母,并将它们放在“a”之前。如何补救?
我在setlocale(LC_COLLATE, "sv_SV")
函数中发现了一些分散的信息,但评论并不是很好,我无法理解它如何与array_multisort()
一起使用。它可以?如果是的话,怎么样? php中还有另一种方式吗?
事情是,必须有某种方式 - 瑞典网站比比皆是,瑞典排序顺序适用。可以用php完成吗?
答案 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_sort或collator_asort。
<ng-container *ngIf="!isLoading && regions?.length">