Лично я предпочитаю использовать первичный / вторичный ключ сортировки. Это менее сложный и простой в реализации типичный запрос sql (ORDER BY column_a, column_b). Отредактировано для добавления : в Php вы могли бы использовать usort(array, comparisonFunction)
с пользовательской функцией сравнения, чтобы добавить дополнительную логику для сортировки, если вы не можете использовать SQL для решения этой задачи.
Однако, если у вас есть только один столбец для работы, и это невозможно исправить, просто префикс с определенным количеством маловероятных символов, таких как символы подчеркивания, для сортировки, а затем удалите их непосредственно перед отображением. (используя подстановку регулярных выражений или аналогичные).
Хак на основе Unicode будет сильно зависеть от того, какие шрифты используются, какой порядок сортировки / сортировки локали вы используете, и может привести к нежелательным побочным эффектам на клиентах, которые вы не контролируете (разные браузеры, разные oses, разные клиентские локали). Большинство «непечатаемых» символов выдают «неизвестный символ» при отображении в системах без их поддержки, которые обычно выглядят как пустой квадрат. Для таких языков, как арабский, используются символы нулевой ширины, но они не должны влиять на сортировку, за исключением приложений с очень извращенной поддержкой Юникода.