バグ
まず、小さなバグを修正する必要があります。
if($time_month<1) // If month==0
{
$time_month=12; // New month==12
$time_year--;
}
このように、13 か月あります... ( 0,1,2,3,4,5,6,7,8,9,10,11,12 )。Datedate("m")
は 1 から 12 までの値を指定する場合、そのコードは次のようになります。
if($time_month==1) // If month==1
{
$time_month=12; // New month==12
$time_year--;
}
最適化しない
もう一度考えてみると、これ以上最適化しようとは思わないでしょう。時期尚早の最適化は諸悪の根源であることを忘れないでください。コードが機能し、比較的短い場合 (その場合) は、そのままにしておくのが最善です。あなたが望むことをする機能があったとしても、唯一の違いは自分でコードをプログラムする必要がないということですが、バックグラウンドプロセスは本当に似ているので、最適化する必要はあまりありません(速度/資力)。
コードにコメントする
また、それが何をするかを説明する 1 ~ 2 行のコメントを書くことをお勧めします。たとえば、1 年程度でコードを再利用したい場合は、コードを理解しておくと役立ちます。
最後の考え。異なる月には異なる日があります。day="31";
あなたのコードが手入力で使用されるのか、それともその日によって使用されるのかはわかりませんが、あなたが書いたコードdate("m")
が 03だったらどうなるでしょうか。
考えられる解決策
これを見てください: Link。次のように動作します。
<?php
$date = new DateTime('2000-01-20');
$date->sub(new DateInterval('P10D')); // 10 days ago
echo $date->format('Y-m-d') . "\n";
?>
出力します2000-01-10