我已经在我的问题中使用了这个函数,所以我需要再次使用它,但问题是不同的。 这是功能:
public function loopThroughDirs($dir)
{
$timeMod = filectime($dir);
$dateMod = ($timeMod) ? date("d-m-Y H:i:s", $timeMod) : ' - ';
if($handle = opendir($dir)){
while (false !== ($entry = readdir($handle))) {
if ( $entry != "." && $entry != "..") {
if(is_dir($dir.$entry)){
$this->loopThroughDirs($dir.$entry.'/');
}
}
}
closedir($handle);
}
var_dump($timeMod);
}
所以这是递归功能让我可以通过目录,当我
的var_dump()
$ timeMod
它显示了每个文件夹的秒数。
我需要互相检查每个文件夹作为函数循环,这样我才能获得最大的$ timeMod 并将其放在我的 $ defaultDate ,(把它放在同一个函数中)这样的东西:
$defaultDate = 0;
if ($timeMod > $defaultDate){
$defaultDate = $timeMod;
}
所以我尝试将其插入到我的功能中,但每当我调用功能时,它只返回日期( $ timeMod 强烈的>我的父母dir。 我需要帮助才能理解这一点,谢谢。
答案 0 :(得分:0)
你必须使$defaultDate
变量静态。此外,您必须在每次外部调用函数时将其重置为0。
所以代码应该是这样的:
public function loopThroughDirs($dir, $level = 0)
{
static $defaultDate = 0;
if (!$level) $defaultDate = 0;
if ($timeMod > $defaultDate) $defaultDate = $timeMod;
$timeMod = filectime($dir);
$dateMod = ($timeMod) ? date("d-m-Y H:i:s", $timeMod) : ' - ';
if ($handle = opendir($dir))
while (false !== ($entry = readdir($handle))) {
if ( $entry != "." && $entry != "..") {
if(is_dir($dir.$entry)){
$this->loopThroughDirs($dir.$entry.'/', $level+1);
}
}
}
closedir($handle);
var_dump($timeMod);
return $defaultDate;
}