その一部がディレクトリを反復処理し、最新の日付を変数に格納し、最新のフォルダーの名前を別の変数に格納するプログラムを実行しています。デバッグできるように一連のアラートを設定しました。
アラートの順序:
- 現在のサブディレクトリと時刻を表す
- 次に、「temp」と呼ばれるサブディレクトリの日付と最新の日付を持つ変数。
- 次に、temp が「latest」より新しい場合は「update time」
- 次に、temp が「latest」より新しい場合は「Time changed」
- 次に、その日付に関連付けられた新しい最新時刻と最新のフォルダー名を表します
私の問題は、最初のサブディレクトリを介して、これがすべて正常に動作することです。次に、2番目のディレクトリがめちゃくちゃになります。最初の 2 つのアラートが予想されます (ちなみに、2 番目のディレクトリは最初のディレクトリより古いです)。3 番目と 4 番目のアラートはスキップされます (予想どおり)。しかし、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; に変更する必要があります。どうやらフォルダオブジェクトは変数に格納できないため