array_multisort () проблемы с алфавитизацией строчными буквами - PullRequest
0 голосов
/ 05 мая 2018

У меня есть база данных людей, и мне нужно было отсортировать их в алфавитном порядке по фамилии. В основном: * * 1001

array_multisort($arr['a'],SORT_ASC,$arr['b'], etc...)

Сначала я поместил SORT_STRING после SORT_ASC, но, похоже, для меня это не имело значения, поэтому я бросил его.

Во всяком случае, алфавитная обработка работала отлично, за исключением нескольких французских имен, начинающихся со строчной буквы "d", например. "де Туссар". Эти имена были сброшены в самом конце, после имен, начинающихся с "Z".

Когда я пишу заглавную букву "d", она работает нормально.

Что-нибудь, что я могу сделать, чтобы это работало независимо?

1 Ответ

0 голосов
/ 05 мая 2018

Как объяснено в этом примере http://php.net/manual/en/function.array-multisort.php#example-6112, вам следует отсортировать строчную копию исходного массива. Так что если вам нужно $arr['a'] из вашего примера, чтобы остаться нетронутым, сделайте

$lowercase = array_map('strtolower', $arr['a']);

, а затем

array_multisort($lowercase, SORT_ASC, SORT_STRING, $arr['b']);
...