使用PHP按文件编号排序图像

azz*_*azz 1 php sorting image

这是我目前正在使用的代码的简化版本.

$files = glob('*.{jpg,png,gif}', GLOB_BRACE);
$counter = 1;
echo '<div id="images">';
foreach($files as $file) {
    if ($counter % $IMGS_PER_ROW == 1)
        echo '<div>';
    echo '<img src="' . $file . '"/>';
    if ($counter % $IMGS_PER_ROW == 0)
    echo '</div>';
    $counter++; 
}
echo '</div>';
Run Code Online (Sandbox Code Playgroud)

这样做,是搜索目录,并找到它找到的每个图像,它内联打印到屏幕,$IMGS_PER_ROW每行最多图像.

这样做的问题,是让我们说我们有15幅图像,用他们的头衔各自的图像(即数量0.jpg,1.jpg...... 14.jpg),他们将被以基于其作为字符串名称打印.(即0.jpg,1.jpg,10.jpg,11.jpg,12.jpg,13.jpg,14.jpg,2.jpg,...).

显然,我希望它们按数字顺序排列,因此排序算法是不可避免的(我认为).我对php不太强大,并且想知道是否有一种简单的O(n ^ 2)方法按数字顺序排序这个文件位置数组,而不是通过字符串比较.

谢谢你的帮助.

Jon*_*Jon 6

只需使用natcasesortnatsort在迭代之前:

$files = glob('*.{jpg,png,gif}', GLOB_BRACE);
natcasesort($files);
foreach($files as $file) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)