PHP — usort() с частичной чувствительностью к региструPhp

Кемеровские программисты php общаются здесь
Anonymous
PHP — usort() с частичной чувствительностью к регистру

Сообщение Anonymous »

У меня есть следующие элементы массива:

Код: Выделить всё

[{
first_name: 'Rebecca'
}, {

first_name: 'amy'
}, {
first_name: 'Amy'
}, {

first_name: 'stacy'
}]
Я хочу, чтобы массив был отсортирован в алфавитном порядке в соответствии со свойством first_name. В случае коллизии, когда свойства first_name совпадают (т. е. Эми и Эми), я хочу, чтобы значение с заглавной буквы было первым.В приведенном выше массиве отсортированные значения должны быть следующими:

Код: Выделить всё

[{
first_name: 'Amy'
}, {

first_name: 'amy'
}, {
first_name: 'Rebecca'
}, {

first_name: 'stacy'
}]
Это текущий пользовательский метод usort(), который я использую:

Код: Выделить всё

usort($users, function($a, $b){
$first_name_compare = strcasecmp($a['first_name'], $b['first_name']);
return $first_name_compare;
});

Код: Выделить всё

strcasecmp()
предположительно нечувствителен к регистру, но я заметил, что это противоречиво. В приведенном выше примере массива strcasecmp() иногда возвращает amy раньше Amy и наоборот.
Что нужно добавить для strcasecmp() в этом случае использования?

Подробнее здесь: https://stackoverflow.com/questions/783 ... ensitivity

Вернуться в «Php»