PHP 7.4 - Apache 2.4 - Windows 2012r2
О setlocale
Много ответов о UTF-8 использует такие обозначения:
setlocale(LC_TIME, 'cs_CZ.utf8', 'czech');
Я не могу прикрепить строку «.utf8» в любой форме, а также подчеркивание не работает для меня. Можно использовать только дефис. Как 'da-DK'
Кто-нибудь может уточнить?
О массиве-мультисортировке
<?php
echo 'Saturday: Lørdag<br>';
setlocale(LC_ALL,'da-DK');
echo setlocale(LC_ALL, 0) . '
';
echo utf8_encode(strftime("%A %d %B %Y", mktime(0, 0, 0, 10, 24, 2020))) . '
';
echo strftime("%A %d %B %Y", mktime(0, 0, 0, 10, 24, 2020)) . '
';
$a=array('Aa','By','Æd','Øv','Ål','€e','Łó','$d');
collator_asort(collator_create('da'), $a);
echo "";echo "Correct danish sort A: ";print_r($a);echo "
"; $ a = массив ('Aa', 'By', 'Æd', ' Øv ',' Ål ',' € e ',' Łó ',' $ d '); $ b = array (' Ha ',' Ho ',' Hi ',' Yo ',' No ',' Do ' , 'Re', 'Mi'); array_multisort ($ a, SORT_DES C, SORT_LOCALE_STRING, $ b); echo '
A:'; array_map (function ($ e) {echo $ e, '-' ;}, $ a); echo '
B:'; array_map (function ($ e) {echo $ e, '-';}, $ b);
Вывод:
Saturday: Lørdag
da-DK
lørdag 24 oktober 2020
l�rdag 24 oktober 2020
Correct danish sort A: Array
(
[7] => $d
[5] => €e
[1] => By
[6] => Łó
[2] => Æd
[3] => Øv
[0] => Aa
[4] => Ål
)
A:Łó - Aa - By - Æd - Ål - €e - Øv - $d -
B:Re - Ha - Ho - Hi - No - Do - Yo - Mi -
«Двойной Аа» - это еще один способ сказать «Å» в дани sh. Если это не ошибка, то «Аа» является вторым последним в правильной сортировке : -)
Что нужно сделать, чтобы заставить array_multisort
работать должным образом - или, по крайней мере, обновить руководство PHP.
Мой временный обходной путь
https://github.com/ThorkilG12/HTML-and-PHP/tree/master/Sort%20PHP%20arrays%20with%20UTF-8%20according%20to%20Locale