为什么每当我使用scandir()时我都会在数组的开头接收句点?
Array
(
[0] => .
[1] => ..
[2] => bar.php
[3] => foo.txt
[4] => somedir
)
Array
(
[0] => somedir
[1] => foo.txt
[2] => bar.php
[3] => ..
[4] => .
)
答案 0 :(得分:95)
每个目录列表中都有两个条目:
.
指的是当前目录..
指的是父目录(如果当前目录是根目录,则为根目录)您可以将结果从scandir的结果中删除,从结果中删除它们:
$allFiles = scandir(__DIR__); // Or any other directory
$files = array_diff($allFiles, array('.', '..'));
答案 1 :(得分:26)
这些是当前(.
)和父(..
)目录。它们存在于所有目录中,用于引用目录本身及其直接父级。
答案 2 :(得分:4)
在Unix惯例中。是指向当前目录的链接,而..是指向父目录的链接。它们都作为目录索引中的文件存在。
答案 3 :(得分:3)
要从.
移除..
和scandir
,请使用此功能:
function scandir1($dir)
{
return array_values(array_diff(scandir($dir), array('..', '.')));
}
array_values
命令重新索引数组,使其从0开始。如果您不需要重新索引数组,那么接受的答案将正常工作。简单地说:array_diff(scandir($dir), array('..', '.'))
。
答案 4 :(得分:0)
在一行代码中:
$files=array_slice(scandir('/path/to/directory/'), 2);