отладка — почему в PHP мой вызов scandir возвращает неверное количество файлов?

    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 дочерних. Может ли это быть как-то связано с этим? Как я могу исправить эту ошибку? Спасибо за любую помощь, которую вы можете предложить; я действительно ценю получение совет от более опытных программистов. 🙂

0

Решение

С помощью 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 детей. Мог
что тут общего?

=> нет, скандир не рекурсивный.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]