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;
});
我正在使用 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;
});