Числовая сортировка результата directory_map () - PullRequest
0 голосов
/ 20 января 2020

Я делаю простой сайт с использованием CodeIgniter 3.1.11, в котором я использую directory_map (), чтобы получить все фотографии, содержащиеся в папке.

Он размещен в Debian, и фотографии названы в числовом формате, и я хотел бы, чтобы они возвращались в числовом порядке, но вместо этого:

 1.jpg
 ...
 9.jpg
 10.jpg
 ...
 19.jpg
 20.jpg
 etc...

У меня есть:

 1.jpg
 10.jpg
 11.jpg
 ...
 2.jpg
 20.jpg
 21.jpg
 etc...

Я пытался добавить sort() в функцию directory_map() перед возвратом массива, как я видел во многих темах:

natsort($filedata);
return $filedata;

, но natsort() большинство людей советовали в нескольких Темы, кажется, не упорядочивают их правильно.

Так что я застрял здесь, думаю, PHP упорядочивает файлы таким образом, как строки, а не целые числа, но я не знаю, что делать поделать.

Вся помощь будет очень ценной, спасибо.

1 Ответ

0 голосов
/ 20 января 2020

вы можете попробовать usort ()

usort( $filedata, function ($a, $b) {
    if ($a == $b) return 0;
    if (intval($a) == intval($b)) return ($a < $b) ? -1 : 1;
    return (intval($a) < intval($b)) ? -1 : 1;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...