Используя MySQL, я выбираю список песен на испанском языке, которые я хотел бы отсортировать.Вот список имен, возвращаемых запросом:
- ¡Decirevilla!
- Альгамбра
- 123 pasitos
- Африка
- Arroz
- Decir
Отсортированный список должен выглядеть следующим образом:
- 123 pasitos
- Африка
- Альгамбра
- Арроз
- ¡Decirevilla!
- Decir
После всех исследований, которые я прочитал, я пришел к выводу, чтонет разумного способа добиться этого с помощью MySQL.Я пробовал сортировку, кодировку и т. Д., Но нет никакой возможности, чтобы символ ¡,? И т. Д. Мог быть отсортирован в соответствии с моим желаемым результатом.Даже А не сортируется так, как я хочу ...
Вопрос 1: Это разумный вывод?
Я считаю, что единственный способ достичь этого - передать результаты вмассив в php, а затем отсортировать массив с помощью пользовательской функции ... все это с помощью функции usort (нужно отсортировать по значению, и мне все равно, нужно ли связывать ключи).Что-то похожее на это:
function normalize($a, $b) {
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
$tracks = array();
while ($row = $result->fetch_assoc()) {
$tracks[] = $row;
}
usort($tracks, 'normalize');
Вопрос 2: Это лучший способ добиться пользовательской сортировки?
Вот где я бью стену:
Вопрос3: я понятия не имею, как создать функцию нормализации, чтобы сортировать имена соответственно моим потребностям.Как игнорировать определенные символы (¡,?, ',!, ¿) И как заменить другие символы натуральным эквивалентом (Á -> A, É -> E и т. Д.). Я считаю, что игнорируя определенные символыи заменяя других, я могу добиться сортировки, которую я слежу за ...
Вопрос 4: Все это имеет смысл?Я на правильном пути?
Спасибо заранее за все ваши советы.Marco