这是我目前正在使用的代码的简化版本.
$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)方法按数字顺序排序这个文件位置数组,而不是通过字符串比较.
谢谢你的帮助.
只需使用natcasesort或natsort在迭代之前:
$files = glob('*.{jpg,png,gif}', GLOB_BRACE);
natcasesort($files);
foreach($files as $file) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1671 次 |
| 最近记录: |