Сортировка массива с учетом регистра - PullRequest
2 голосов
/ 18 ноября 2011

Мне просто интересно, почему функция ksort () сортирует сначала прописные, а затем строчные клавиши по умолчанию?

Какая логика выше этого?

Ответы [ 3 ]

11 голосов
/ 18 ноября 2011

Кажется, вы знакомы с фактом, что ksort() чувствителен к регистру.

Причина мне неясна, но есть простое решение.

uksort() позволяет вамчтобы отсортировать массив с помощью пользовательской функции, однако, как бы мы ни были ленивы, мы не хотим определять нашу собственную функцию и использовать нативную.Функция strcasecmp() позволяет нам сравнивать строку без учета регистра и работает точно так же, когда мы определяем нашу собственную функцию.Когда строка имеет высокое значение, возвращается значение больше 0.Если значение меньше, возвращается меньшее значение и, если оно равно, функция возвращает 0. Итак, идеальный кандидат для нашей uksort() функции.

Это будет работать для вас: $sorted = uksort($array, 'strcasecmp');

4 голосов
/ 18 ноября 2011

заглавные значения меньше строчных.

например: - в ascii.А - 65, а - 97

2 голосов
/ 18 ноября 2011

Поскольку заглавные буквы "выше", чем строчные при заказе букв, пунктуация снова выше. Это идет A-Za-z.

Для сортировки без учета регистра символов используйте natcasesort($array);.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...