[英]Sorting in numeric and alphabetical order
我遇到了这个代码块,它从指定的文件夹中提取图像并使用img
标记输出它们:
<?php
$url = "./images/";
$handle = opendir ($url);
while (false !== ($file = readdir($handle))) {
if($file != "." && $file != ".." && $file != basename(__FILE__)) {
echo '<a href="'.$url.$file.'" class="lightbox" title="'.$file.'"><img src="'.$url.$file.'" alt="" /></a><br />';
?>
这很有效,但我遇到的唯一问题是图像的排序。
所以,让我们说在我的images
文件夹中,我有这些图像:
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 />';
}
}
?>
<?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
)
您可以将链接添加到数组,而不是立即回显它们。 然后使用sort($array)
将它们按正确的顺序放置,并通过在foreach循环中遍历每个循环来回显它们: foreach($array as $image) { echo ... }
。
有关详细信息,请参阅: http : //php.net/manual/en/function.sort.php
我将文件名存储在一个数组中,然后使用sort()
来排序数组。 没有更简单的方法可以做到这一点,因为reddir只返回文件名,如下所示:
文件名按文件系统存储的顺序返回。
scandir()
和glob()
函数都可以返回已排序目录内容的数组,或者您可以继续使用opendir/readdir()
手动构造数组。
如果排序顺序(或缺少顺序)不是您喜欢的顺序,那么您可以使用任何数组排序功能来操作顺序,无论您喜欢什么。 我倾向于喜欢natcasesort()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.