我知道这是一个简单的问题,但我面临着有线问题。
我正在使用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
我真的很感谢你的帮助。
答案 0 :(得分:0)
您应该将sort($files)
替换为实现自然排序的natsort($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
值。