#php #arrays #sorting #alphabet
Вопрос:
Извините, я изучаю PHP. Ищу помощь в сортировке массива по имени — но в качестве алфавита моей локали.
Я хотел бы отсортировать массив как nordic alpabet, и я хотел бы оставить строки с числами последними, я попытался использовать мультисорт с 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-Ö
)
))
Ответ №1:
Вы можете использовать класс Collater в php. Вот пример. Я не лингвист, но думаю, что использование норвежского языка, вероятно, помогло бы.
<?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);