在 PHP 中,为啥我的 scandir 调用会返回错误数量的文件?

Posted

技术标签:

【中文标题】在 PHP 中,为啥我的 scandir 调用会返回错误数量的文件?【英文标题】:In PHP, why does my scandir call return the wrong amount of files?在 PHP 中,为什么我的 scandir 调用会返回错误数量的文件? 【发布时间】:2017-11-10 09:54:35 【问题描述】:
    for($instancesFiles=1;$instancesFiles<count(scandir("Articles/".date('y-m-d').""));$instancesFiles++)
//For each file inside the directory for today's articles, each of which corresponds to an instance of the "article" class...
        $dir="Articles/".date("y-m-d")."/".$instancesFiles."";
        $artProps=scandir($dir);
    //Retrieve an array of its interior files, each of which corresponds to a property of the aforementioned instance

在今天日期的文件下,我有一个其他目录,但是当询问 scandir 返回的数组的计数时,我总是得到“3”。(我已经用 echo 调用检查了这个,其中“count( scandir($dir))" 总是返回 3。$dir 中有子文件,但有 4 个子文件。这可能与它有关吗?如何解决此错误?感谢您提供的任何帮助;我非常感谢从更有经验的程序员那里获得建议。:)

【问题讨论】:

【参考方案1】:

使用 scandir,您始终可以获取当前目录 (.) 和父目录 (..)。您可以检查是否对 scandir 的结果进行了 print_r。所以你只需要从scandir的计数中减去2。

根据文档:

$dir    = '/tmp';
$files1 = scandir($dir);

print_r($files1);

Array
(
    [0] => .
    [1] => ..
    [2] => bar.php
    [3] => foo.txt
    [4] => somedir
)

$dir 中有子文件,但有 4 个子文件。可以 有什么关系吗?

=> 不,scandir 不是递归的。

【讨论】:

以上是关于在 PHP 中,为啥我的 scandir 调用会返回错误数量的文件?的主要内容,如果未能解决你的问题,请参考以下文章

解决PHP scandir()异常返回空问题

php scanDir.php

PHP SCANDIR

PHP SCANDIR

php-scandir()报错

PHP MySQL - 为啥存储过程调用在 PHP 代码中意外结束