我知道这是一个简单的问题,但我面临着有线问题。
我正在使用 scandir() 扫描一些 PDF。 这是我使用的以下代码
<?php
$dir = 'download/';
$files = scandir($dir);
sort($files);
for ($i=2; $i <count($files); $i++) {
echo "<a href=download/$files[$i]>$files[$i]</a> ";
echo "<br>";
}
print_r($files);
?>
根据我的 exp,它应该给我输出 oder
1.pdf
2.pdf
.
.
.
.
.
.
.
10.pdf
11.pdf
这样,但我在输出中得到的是以下内容
1.pdf
10.pdf
11.pdf
2.pdf
.
.
.
.
.
.
11.pdf
另外,如果我print_r()检查数组,它显示以下内容
Array ( [0] => . [1] => .. [2] => 1.pdf [3] => 10.pdf [4] => 2.pdf [5] => principal 10.pdf [6] => principal11.pdf [7] => principal12.pdf [8] => principal13.pdf [9] => principal14.pdf [10] => principal15.pdf [11] => principal16.pdf [12] => principal4.pdf [13] => principal5.pdf [14] => principal6.pdf [15] => principal7.pdf [16] => principal8.pdf [17] => principal9.pdf ) 1
我真的很感激你的帮助。
你应该用 natsort($files)
替换sort($files)
,这实现了自然排序。
测试代码:
$array = array('1.pdf', '10.pdf', '2.pdf', '3.pdf', '6.pdf', '11.pdf');
natsort($array);
print_r($array);
其中输出:
Array
(
[0] => 1.pdf
[2] => 2.pdf
[3] => 3.pdf
[4] => 6.pdf
[1] => 10.pdf
[5] => 11.pdf
)
要遍历$array
,请使用foreach
而不是依赖于数组键for
循环。例如:
foreach($array as $file) {
if($file == '.' || $file == '..') {
continue;
}
echo $file . '<br />';
}
参考: natsort()
旁注:您的 HTML 代码无效。您应该用引号将href
值括起来。