PHP-сортировка массива имен файлов с числами?

может ли кто-нибудь сказать мне, как сортировать массив, содержащий имена файлов, начинающиеся с чисел? Поскольку строки, начинающиеся с 11, 12, 13 и т. д., считаются ниже 2, это искажает мои результаты следующим образом:

[0] "1. File one.pdf"
[1] "11. File eleven.pdf"
[2] "12. File twelve.pdf"
[3] "2. File two.pdf"
[4] "3. File three.pdf"

есть ли что-нибудь, что я могу сделать, чтобы отсортировать их должным образом?

2 ответов


можно использовать natsort. или natcasesort, который нечувствителен к регистру. Если есть больше, чем числа (т. е. diacritics), вы должны гарантировать, что используете правильный locale.

Если этого недостаточно, то есть. вы также хотите сортировать литералы чисел ("один"," два"," три"), вы можете использовать usort, что позволяет использовать пользовательский обратный вызов в качестве функции сравнения.


использование может получить естественный порядок с помощью natsort

посмотреть его.