Основная арифметика внутри функции не работает

У меня есть функция 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 и т. Д., И получил разные результаты, но ни один из них не был правильным.

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

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

2 ответа

Решение

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

function getFileCountDivided($path) {
    return getFileCount($path) / 2;
}

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

Другие вопросы по тегам