我正在运行一个程序,其中它的一部分迭代一个目录并将最近的日期存储在一个变量中,并将最近的文件夹的名称存储在另一个变量中。我设置了一系列警报,以便我可以调试。
警报顺序:
- 表示当前子目录和时间
- 然后是子目录 date 被称为“temp”和 latest date 的变量。
- 然后“更新时间”,如果温度比“最新”更近
- 如果温度比“最新”更近,则“时间已更改”
- 然后它表示与该日期关联的新的最新时间和最新文件夹名称
我的问题是通过第一个子目录,这一切都正常。然后第二个目录就搞砸了。前 2 个警报是预期的(顺便说一下,第二个目录比第一个目录旧)。第三个和第四个警报被跳过(如预期的那样)。但第 5 个警报显示最新文件夹变量已更改为当前子目录(但最新时间仍与过去迭代的子目录时间相同)。
希望这是有道理的....这里是代码
<?php
$files = array();
$latestTime = date("1900-01-01"); ///older then any of the folders will be
$latestFolder = "none";
foreach (new DirectoryIterator('./images/ISGC_images/') as $fileInfo) { ///iterate through directory
if($fileInfo =="."|$fileInfo == "..") continue;
if($fileInfo->isDir()) {
echo "<script type='text/javascript'>alert('".$fileInfo." was updated ".date("F d Y H:i:s.",filemtime('./images/ISGC_images/'.$fileInfo))."');</script>";
$tempDate = date("F d Y H:i:s.",filemtime('./images/ISGC_images/'.$fileInfo));
echo "<script type='text/javascript'>alert('"."temp time is ".$tempDate.'and latest time is'.$latestTime."');</script>";
if ($tempDate > $latestTime)
echo "<script type='text/javascript'>alert('"."update time"."');</script>";
if ($tempDate > $latestTime) {
$latestFolder = $fileInfo;
$latestTime = $tempDate;
echo "<script type='text/javascript'>alert('"."Time Changed!"."');</script>";
}
echo "<script type='text/javascript'>alert('"."latest folder is ".$latestFolder."');</script>";
echo "<script type='text/javascript'>alert('"."latest time is ".$latestTime."');</script>";
}
}
?>
回答
第 14 行需要改为 $latestFolder = (string)$fileInfo; 因为文件夹对象显然不能存储在变量中