Есть такой код
usort($clinic, function($a, $b) {
if ($a['DISTANCE'] == $b['DISTANCE']) {
return 0;
}
return ($a['DISTANCE'] < $b['DISTANCE']) ? -1 : 1;
});
он сортирует массив по возрастанию.
Вопрос как сделать сортировку по алфавиту имен, на основе такоже кода ? Что-то вроде этого, но он работает не верно.
usort($clinic, function($a, $b){
return ($a['NAME'] < $b['NAME']);
});
Не могу понять логику usort, может объяснит кто или пример скажет.
usort
работает аналогично sort
за одной разницей, что функцию сравнения задаёт пользователь.
У вас уже есть рабочий код (первый пример). Почему в него вместо "DISTANCE" не подставить "NAME"?
Callback функции сортировок должны возвращать 3 значения:
В вашем втором примере возвращается boolean значение, который к integer приводится как:
Другими словами, ваша функция вернёт:
Поэтому, у вас и неправильная сортировка.
Изменив ваш же код, получаем:
usort($clinic, function($a, $b) {
if ($a['NAME'] == $b['NAME']) {
return 0;
}
return ($a['NAME'] < $b['NAME']) ? -1 : 1;
});
Если я не совсем правильно понял суть, поясните, пожалуйста.
Можете сделать так: Стандартными функциями php:
$strings = array('/root/mandy/c.pdf', '/root/mandy/a.pdf', '/root/mandy/b.pdf');
sort($strings);
print_r($strings);
У меня так работает нормально.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть несколько классов, которые взаимодействуют между собой
Как сохранить координаты в mysql Leaflet drow