函数内的基本算术不起作用
Basic arithmetic within a function not working
我有一个 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;
}
可以正常工作,但我需要在返回之前将 $size 除以 2。
如果我这样做 'return $size / 2;' 那么 60 就变成 22.5。 72 变为 19.125。这对我来说没有意义。我也试过 intdiv(),试过乘以 0.5,等等,我得到了不同的结果,但 none 其中是正确的。
我知道这可能是非常基础的东西。
如果我在函数之外进行除法,它会正常工作,但我想在返回整数之前处理它。
你能创建一个包装函数吗?
function getFileCountDivided($path) {
return getFileCount($path) / 2;
}
这可能是因为递归的缘故,子目录数除以 2 将作为上层目录数的一部分再次除以。
您可以将此函数包装在另一个函数中,它将最终计数除以一次 return。在这种情况下,跟踪目录深度对我来说似乎开销太大,尽管这也是一个选项。
我有一个 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;
}
可以正常工作,但我需要在返回之前将 $size 除以 2。
如果我这样做 'return $size / 2;' 那么 60 就变成 22.5。 72 变为 19.125。这对我来说没有意义。我也试过 intdiv(),试过乘以 0.5,等等,我得到了不同的结果,但 none 其中是正确的。
我知道这可能是非常基础的东西。
如果我在函数之外进行除法,它会正常工作,但我想在返回整数之前处理它。
你能创建一个包装函数吗?
function getFileCountDivided($path) {
return getFileCount($path) / 2;
}
这可能是因为递归的缘故,子目录数除以 2 将作为上层目录数的一部分再次除以。 您可以将此函数包装在另一个函数中,它将最终计数除以一次 return。在这种情况下,跟踪目录深度对我来说似乎开销太大,尽管这也是一个选项。