1

私は驚いています。strtotime を含めるのを忘れていましたが、どのような場合でも機能することに気付きました。なぜこれが機能するのですか?

    if($_POST['active_to'] == ''  || $_POST['active_to'] >= '2038-01-19'){
        $postproduct->active_to = '2025-07-31';
    }else{
        $postproduct->active_to = $_POST['active_to'];
    }
4

5 に答える 5

5

文字列比較を使用すると、YYYY-MM-DD 形式がたまたま同じ順序でソートされるためです。

たとえば、DD-MM-YYYYフォーマットを使用していた場合、機能しませんでした。同様に、YYYY-MD 形式 (先頭のゼロは必要ありません) を使用している場合も、機能しません (文字列の順序で"2010-5-10"になるため)。 "2010-12-10"

"2010-10-05"より大きいのは>の"2000-10-05"ためではなく、=および>のためです。2 つの文字列間で異なる最初の文字は、たまたま正しい順序で並べ替えられます。20102000"20""20""1""0"

于 2012-09-11T07:24:21.387 に答える
2

文字列は文字ごとに語彙的に比較されるためです。

  • 2より大きいですか2
  • いいえの場合、0より大きい0ですか?
  • いいえの場合...
于 2012-09-11T07:24:28.180 に答える
0

greater then less thenまたはそれが文字列であるため、日付のみを直接比較できequalます。

日付のみのYYYY-MM-DD形式である限り。YYYY-MM-DD常に増分形式で変更されるためです。

フォーマットに注意してください。それ以外の場合は、関数を使用する必要がありstrtotimeます。

于 2012-09-11T07:24:33.817 に答える
0

文字列を比較します。この操作では、文字列が数値に変換されます。format を使用している場合Y-m-d、最初に年が最大の値 (Y*365 日)、次に月、そして日であるため、うまく機能します。

月の日数の値が等しくないなどの理由で、結果が無効になる場合があります。

参照: http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.types

于 2012-09-11T07:26:22.003 に答える
-1

or条件が真である限り、条件で機能する文字列比較を行っているため、ITは機能します。

于 2012-09-11T07:26:17.937 に答える