PHP scandir 奇怪的行为
好的,所以我想做的是扫描“上一个”文件夹。
$scanned = scandir("..");
foreach($scanned as $file){
if(is_file($file)){
print $file."<br />";
}
}
即使在我的“..”目录中,我有 20 多个文件,但我只得到三行,
index.jpg
index.php
template.dtd
我注意到,如果我不使用 is_file if 子句,它会返回所有文件名;但我真的需要 if 子句。
ok, so what i'm trying to do is to scan the "previous" folder.
$scanned = scandir("..");
foreach($scanned as $file){
if(is_file($file)){
print $file."<br />";
}
}
even though in my ".." directory i have 20+ files i get just three rows
index.jpg
index.php
template.dtd
i noticed that if i don;t use that is_file if clause it returns all file names; but i really need that if clause.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我将花一些时间猜测这三个文件同时存在于当前目录和父目录中。
scandir()
仅返回文件名,当您的意思是is_file("../$file")
时,您正在调用is_file($file)
>。I'm going to take a while guess that those three files exist in both the current directory and the parent directory.
scandir()
only returns filenames, and you're callingis_file($file)
when you meanis_file("../$file")
.您的函数正在测试当前目录中的文件名,而不是前一个目录中的文件名。要获得所需的结果,请尝试: is_file('../' . $file) 。
Your function is testing for those filenames in the current directory and not in the previous directory. To get the desired result, try: is_file('../' . $file) instead.