directory_map() 的数值排序结果

Sorting numerically result of directory_map()

我正在使用 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...

我尝试在返回数组之前在 directory_map() 函数中添加一个 sort(),正如我在许多主题中看到的那样:

natsort($filedata);
return $filedata;

但是 natsort() 大多数人在几个主题中的建议似乎并没有以正确的方式排序。

所以我有点卡在这里了,我认为 PHP 以这种方式像字符串而不是整数一样对文件进行排序,但我不知道该怎么做。

非常感谢所有帮助,谢谢。

你可以试试 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;
});