所以我对面的这个代码块从指定的文件夹拉图像,并与img标签。OUPUTS他们来了问题与图像的排序有关。PHP在数字和字母顺序排序
所以,让我的 “图片” 文件夹中说,我有这些图片:
2.JPG B.JPG A.JPG 1.JPG
我怎样才能让这个它以数字和字母顺序列出图像?我想编号的图像是第一位的,然后,按字母顺序,所以它会列出相似图片:
1.JPG 2.JPG A.JPG B.JPG
有什么想法就这样做与我有的代码?
感谢您的帮助!
所以我对面的这个代码块从指定的文件夹拉图像,并与img标签。OUPUTS他们来了问题与图像的排序有关。PHP在数字和字母顺序排序
所以,让我的 “图片” 文件夹中说,我有这些图片:
2.JPG B.JPG A.JPG 1.JPG
我怎样才能让这个它以数字和字母顺序列出图像?我想编号的图像是第一位的,然后,按字母顺序,所以它会列出相似图片:
1.JPG 2.JPG A.JPG B.JPG
有什么想法就这样做与我有的代码?
感谢您的帮助!
你需要的是一种自然语言排序。
使用PHP函数natsort().. 这里..
<?php
$url = "./images/";
$temp_files = scandir($url);
natsort($temp_files);
foreach($temp_files as $file)
{
if($file != "." && $file != ".." && $file != basename(__FILE__))
{
echo '<a href="'.$url.$file.'" class="lightbox" title="'.$file.'"><img src="'.$url.$file.'" alt="" /></a><br />';
}
}
?>
您可以将链接添加到数组中,而不是立即回显它们。然后使用sort($array)
以正确的顺序放置它们,并通过遍历每个foreach循环来回显它们,如:foreach($array as $image) { echo ... }
。
欲了解更多信息,请参见:http://php.net/manual/en/function.sort.php
我将存储阵列中的文件名,然后用sort()
订购阵列。有没有更简单的方法来做到这一点,因为reddir只返回像这样的文件名:
文件名按文件系统存储的顺序返回。
的scandir()
和glob()
功能可以排序的目录内容都返回阵列,也可以继续使用opendir/readdir()
手动构建阵列。
如果排序顺序(或缺少排序顺序)不是您喜欢的,那么您可以使用任何array sorting functions来操纵顺序,无论您喜欢。我倾向于喜欢natcasesort()
。
<?php
$url = "./test/";
$exclude = array('.', '..');
$files = array_diff(scandir($url), $exclude);
natsort($files);
print_r(array_values($files));
?>
输出:
Array
(
[0] => 1.jpg
[1] => 2.jpg
[2] => a.jpg
[3] => b.jpg
)
这工作很好,谢谢你!甚至不知道这个功能存在 – 2011-03-29 21:34:52
伟大的解决方案! – 2012-08-07 14:19:26
如果我想换个角度呢?第一个字母,然后数字? – 2012-08-07 14:23:13