1
        if($_POST['syear']){
            $compy = strtotime($_POST['syear']);
            if(date("Y") <= date("Y", $compy)){
                //success
                $startdate = $_POST['syear'];
            }
            else{
                $error = 6;
            }
        }

私は上記のコードを作成しましたが、どこが間違っているのかわかりません。数字が入ったフォームから文字列を投稿していて、今年と比較したいと思います。その数が今年以下であれば、成功するはずです。今年より多くても大成功です。一部の文字列をintに変換する必要がありますか、それとも何かを完全に見逃しましたか?

4

4 に答える 4

5

PHPは文字列の比較を非常にうまく処理しますが、これを直接試しましたか?(そして比較順序を> =に変更します)

if($_POST['syear']){
    if(date("Y") >= $_POST['syear']){
        $startdate = $_POST['syear'];
    }else{
        $error = 6;
    }
}
于 2012-07-18T21:54:36.003 に答える
1

単純に1年ごとに変換することはできません。例をそのまま使用すると、strtotimeを使用するには、yyyy / mm/dd形式の文字列が必要です。本当に年をチェックするだけの場合は、1月1日をチェック日として使用できます。

 $compy = strtotime($_POST['syear'] . '-01-01' );
于 2012-07-18T21:57:59.747 に答える
0

同じ方法で整数または文字列を比較できます。型の比較を確認したい場合は、いつでも変数をキャストできますが、この場合は意味がありません。2012年は2013年より劣っています。「2012年」は「2013年」より劣っています。date('Y')は4文字の文字列を返します。これは、4文字の文字列の場合は$_POST['syear']と比較できます。お役に立てれば。

于 2012-07-18T22:16:55.917 に答える
-1

あなたは試すことができます

if(time() <= $compy){

あなたはすでにstrtotime()どんなコンプソグナトゥスでもやっているからです。このようにして、2つのUNIXタイムスタンプを操作し、それらをそのように比較します。

于 2012-07-18T21:54:09.403 に答える