-3

そのため、特定の時間帯に背景色を変更する単純な関数を作成しようとしていますが、何かが正しく機能していません。

PHP を実行すると、ページの背景色が空白になり、HTML にbackground-color: ;. blueまたは属性に到達していません。そのblack理由を知りたいです。

何か案は?

PHP:

<?php
function backgroundColor(){
    $backgroundColor = '';

    if (date('H:i') >= strtotime('06:00') && date('H:i') <= strtotime('20:00')){
        $backgroundColor == 'blue';
    } else {
        $backgroundColor == 'black';
    }

    return $backgroundColor;
}
?>

HTML:

<html>
<head>
    <title></title>

    <style>
        body{
            background-color: <?=backgroundColor()?> ;
        }
    </style>
</head>
<body>
    <?php echo date('H:i')?>
</body>
</html>
4

3 に答える 3

4

2 つの問題があります。1 つ目は、時間 (時間としてフォーマットされた、IE 10:13) が UNIX タイムスタンプとしてフォーマットされた時間よりも大きい/小さいかどうかをチェックすることです。これは残念ながらうまくいきません。これを解決するには、date()呼び出しをstrtotime()メソッドでラップする必要があります。

=2 番目の問題は、複数の符号を使用して値を設定しようとしていることです。PHP では、単一の=. ==変数に何かの値があるかどうかを確認するために、複数が使用されます。以下の修正されたコードを試してください。

function backgroundColor(){
    $backgroundColor = '';

    if (strtotime(date('H:i')) >= strtotime('06:00') && strtotime(date('H:i')) <= strtotime('20:00')){
        $backgroundColor = 'blue';
    } else {
        $backgroundColor = 'black';
    }

    return $backgroundColor;
}
于 2013-09-25T01:14:59.350 に答える
1

このアイデア全体について、より大きな問題を提起したいと思います。PHP はタイムゾーンに対応した言語ではないため、サーバー側のロジックを使用してこの種のテーマ設定を行うと、訪問者の場所に関する信頼できる洞察が得られない場合、後で多くの頭痛の種になります。おそらく、Javascript を使用して、この問題に対するまったく異なる解決策ではありますが、より信頼性の高い方法を提案できます。

<script type="text/javascript">

function assignBackgroundColor(){

  var d = new Date();

  var body = document.body;

  if (d.getHours() > 6 && d.getHours() <= 20){

    body.style.backgroundColor = "#0000FF"; //blue

  }else{

    body.style.backgroundColor = "#000000"; //black

  }

}

</script>

次に、本体の onload イベント中に呼び出すだけです。

<body onload="assignBackgroundColor();">
于 2013-09-25T01:34:01.763 に答える
1

2 つを等価に適切に変換するには、date() 関数で strtotime() 関数を使用する必要があります。

さらに、= セット演算子の代わりに == 比較演算子を使用していました。

PHP:

<?php
function backgroundColor(){
    $backgroundColor = '';
        if (strtotime(date('H:i')) >= strtotime('06:00') && strtotime(date('H:i')) <=                strtotime('20:00')){
    $backgroundColor = 'blue';
    } else {
        $backgroundColor = 'black';
    }
    return $backgroundColor;
    }
?>

HTML:

<html>
<head>
    <title></title>
    <style>
        body{
             background-color: <?php echo backgroundColor();?> ;
        }
    </style>
</head>
<body>
    <?php date('H:i');?>
</body>
</html>
于 2013-09-25T01:24:01.347 に答える