他の誰かが以前に取り組んだコードに問題があります。
目標は、ディレクトリを反復処理し、特定の日付範囲内にあるすべてのファイルを配列にプッシュすることです(ファイルはmmddyyy.txt形式です)。
コード内の(私自身が行っているのではなく、ひどく名前が付けられている)変数は次のことを表しています。
$ isGood-ファイルが配列に追加されます。
$isGood = false;
if($aYear >= $sYear1 && $aYear <= $sYear2)
{
if($aYear == $sYear1)
{
if($aMonth == $sMonth1)
{
if($aDay >= $sDay1 && $aDay <= $sDay2)
{
$isGood = true;
}
}
else
{
if($aMonth >= $sMonth1 && $aMonth <= $sMonth2)
{
$isGood = true;
}
}
}
else if($aYear == $sYear2)
{
if($aMonth == $sMonth2)
{
if($aDay <= $sDay2)
{
$isGood = true;
}
}
else
{
if($aMonth <= $sMonth2)
{
$isGood = true;
}
}
}
else
{
$isGood = true;
}
}
if($isGood)
{
//echo "Found good article";
$a = $a . "===" . $file;
array_push($result, $a);
}
期待した結果が得られません。このコードを単純化して適切に機能させる方法について、いくつかのヘルプを探しています。このソリューションをPHPで維持する必要があります。
前もって感謝します。
@Sandeepが指摘したように、問題は次のとおりです。
if ($aMonth >= $sMonth1 && $aMonth <= $sMonth2)
そして
if ($aDay >= $sDay1 && $aDay <= $sDay2)
日付と終了日も比較する必要がないためです。
そうは言っても、次のようなことを行うことでコードを完全にクリアすることができます。
$date = (new DateTime)->setDate($aYear, $aMonth, $aDay);
$start = (new DateTime)->setDate($sYear1, $sMonth1, $sDay1);
$end = (new DateTime)->setDate($sYear2, $sMonth2, $sDay2);
if ($start <= $date && $date <= $end) {
//echo "Found good article";
$a = $a . "===" . $file;
array_push($result, $a);
}
お役に立てれば!
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加