问题描述
对不起 - 我正在学习 PHP。寻求帮助按名称对数组进行排序 - 但作为我的语言环境字母表。
我想将数组排序为北欧字母表,我想最后留下带有数字的行,我尝试使用 setlocale 进行多重排序,但我无法正确排序。
我的示例数组:
Array(
[3] => Array
(
[0] => WP_Term Object(
[name] = 3-title-with-starting-3
)
)
[9] => Array
(
[0] => WP_Term Object(
[name] = 9-title-with-starting-9
)
)
[A] => Array
(
[0] => WP_Term Object(
[name] = A-title-with-starting-A
)
[1] => WP_Term Object(
[name] = A-title-with-starting-A2
)
)
[Z] => Array
(
[0] => WP_Term Object(
[name] = Z-title-with-starting-Z
)
[1] => WP_Term Object(
[name] = Z-title-with-starting-Z
)
)
[Ö] => Array
(
[0] => WP_Term Object(
[name] = Ö-title-with-starting-Ö
)
[1] => WP_Term Object(
[name] = Ö-title-with-starting-Ö
)
))
解决方法
您可以使用 php 中的 Collater 类。这是一个例子。我不是语言学家,但我认为使用挪威语语言环境可能会有所帮助。
<?php
$letters = ['Ö','X','A','Z','2','99','D'];
//Make a Collator object with the locale code of the language to sort.
$collator = new Collator('nb'); //nb Norwegian Bokmål
//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($letters,Collator::SORT_REGULAR);
var_dump($letters);