У меня есть функция PHP, которую я использую для подсчета файлов в каталоге.

function getFileCount($path) {
$size = 0;
$ignore = array('.','..','cgi-bin','.DS_Store');
$files = scandir($path);
foreach($files as $t) {
    if(in_array($t, $ignore)) continue;
    if (is_dir(rtrim($path, '/') . '/' . $t)) {
        $size += getFileCount(rtrim($path, '/') . '/' . $t);
    } else {
        $size++;
    }   
}
return $size;
}

Это работает правильно, но мне нужно разделить размер $ на 2, прежде чем вернуться.

Если я сделаю 'вернуть $ size / 2;' затем 60 становится 22,5. 72 становится 19,125. Это не имеет смысла для меня. Я также попробовал intdiv (), попытался умножить на 0.5 и т. Д., И я получил разные результаты, но ни один из них не является правильным.

Я знаю, что это, наверное, что-то чрезвычайно простое.

Если я делю вне функции, она работает правильно, но я хочу обработать это, прежде чем возвращать целое число.

1
Koda 5 Апр 2017 в 07:24

2 ответа

Лучший ответ

Можете ли вы создать функцию-обертку?

function getFileCountDivided($path) {
    return getFileCount($path) / 2;
}
0
bumperbox 5 Апр 2017 в 04:36

Это, вероятно, из-за рекурсии, количество подкаталогов, разделенное на 2, будет снова разделено как часть верхнего количества каталогов. Вы можете обернуть эту функцию в другую, которая разделит окончательный счет один раз и вернет. Отслеживание глубины каталогов в этом случае кажется мне слишком сложным, хотя это тоже вариант.

0
Michael G 5 Апр 2017 в 09:22