Php 函数中的基本算法不起作用
我有一个PHP函数,用于计算目录中的文件数Php 函数中的基本算法不起作用,php,integer,division,integer-division,Php,Integer,Division,Integer Division,我有一个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)) {
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
如果我“返回$size/2;”然后60变成22.5。72变成19.125。这对我来说毫无意义。我还尝试了intdiv(),尝试了乘以0.5,等等,我得到了不同的结果,但没有一个是正确的
我知道这可能是非常基本的
如果我在函数外进行除法,它会正常工作,但我想在返回整数之前处理它。你能创建一个包装函数吗
function getFileCountDivided($path) {
return getFileCount($path) / 2;
}
你能创建一个包装器函数吗
function getFileCountDivided($path) {
return getFileCount($path) / 2;
}
这可能是因为递归的缘故,子目录计数除以2将被再次除以,作为上层目录计数的一部分。
您可以将此函数包装在另一个函数中,该函数将最终计数除以一次并返回。在这种情况下,跟踪目录深度对我来说似乎是太大的开销,尽管这也是一个选项。这可能是因为递归,子目录计数除以2将再次除以上层目录计数。
您可以将此函数包装在另一个函数中,该函数将最终计数除以一次并返回。在这种情况下,跟踪目录深度对我来说似乎开销太大,尽管这也是一个选项。您以递归方式调用它,因此一些结果被多次除法。计算数组并减去静态值。我想,它将节省额外的工作循环,因为我可以告诉我需要它是递归的,以便在子目录中的文件也可以计数。有没有办法将除法应用于$size的最终返回值?您是递归调用它的,因此某些结果被除法多次。计算数组并减去静态值。我想,它将节省额外的工作循环,因为我可以告诉我需要它是递归的,以便在子目录中的文件也可以计数。有没有办法将除法应用于$size的最终返回值?我刚刚尝试了这个方法,它也返回了相同的错误值(60/2=22.5,等等)。如果执行$x=getFileCount($path),会得到什么结果;var_dump(x美元);我得到了int 60,它可以很好地除以metat,但是int()也会被打印出来。有什么方法可以避免这种情况吗?我只是出于调试的目的才建议这样做的。我认为这个划分是有效的,但是在你回显输出的地方出现了一些问题,你能再显示一些调用代码吗?我在WordPress查询循环中调用它。我在这里也尝试了一些变体,但最相关的是:$path=getcwd()/wp内容/上传/截图/'$类“/”;echo getFileCountDivided($path);我刚刚尝试了这个,它也返回了同样的错误值(60/2=22.5,等等)。如果执行$x=getFileCount($path),会得到什么结果;var_dump(x美元);我得到了int 60,它可以很好地除以metat,但是int()也会被打印出来。有什么方法可以避免这种情况吗?我只是出于调试的目的才建议这样做的。我认为这个划分是有效的,但是在你回显输出的地方出现了一些问题,你能再显示一些调用代码吗?我在WordPress查询循环中调用它。我在这里也尝试了一些变体,但最相关的是:$path=getcwd()/wp内容/上传/截图/'$类“/”;echo getFileCountDivided($path);