1

変数のif/elseifステートメントを作成しようとしています$day。このPHPに関連付けられたHTMLコードで変数とその値を定義しました。このページにPHPセクションを貼り付けます。問題は、結果ページが「$ day=1」の応答しか出していないことです。誰かがこれを引き起こすこのコードのエラーを知っていますか?また、2つの等号を使用してみましたが、さらに悪化しました。

echo "<p>";
                if ($day = 1) {
                    echo "Sunday Funday! What COMMITMENT to going out!";
                } elseif ($day = 2) {
                    echo "The start of what's sure to be a rough week. Drink away your sorrows.";
                } elseif ($day = 3) {
                    echo "Epic night! SO many themes at the bars!";
                } elseif ($day = 4) {
                    echo "Hump day!! But seriously, what are you doing...? Aren't you too hungover from last night?";
                } elseif ($day = 5) {
                    echo "Thirsty Thursday!! It's close enough to the weekend... right?";
                } elseif ($day = 6) {
                    echo "It's Friiiiiiday, Friiiiiiiday, Gotta get down on Friiiiiiiiiday!";
                } elseif ($day = 7) {
                    echo "It's FRATurday! Go have some fun!";

            } 
4

6 に答える 6

8

=comparison を使用する場合は、代入を使用してい==ます。

代入は右辺にあるものに評価されるので、

if ($day = 1)

と同じです

if (1)

これらのルールにより、これは

if (true)

これにより、プログラムがそのように動作する理由が説明され、もちろん修正方法もわかりました。switchしかし、ステートメントを使用するとさらに良いでしょう:

switch($day) {
    case 1:
        echo "Sunday Funday! What COMMITMENT to going out!";
        break;
    case 2:
        echo "The start of what's sure to be a rough week.";
        break;
    // etc etc
}
于 2012-05-06T03:02:41.827 に答える
6

あなたは(=)を割り当てています。論理的等価性 ( ) が必要です==

if ($day == 1) {
  echo "Sunday Funday! What COMMITMENT to going out!";
}

比較演算子と論理演算子を確認してください。また、switch()ステートメント

于 2012-05-06T03:02:32.660 に答える
6

チェックする条件の長いリストがある場合、通常、if / else ステートメントの長いチェーンを記述したくありません。むしろ、switchブロックやarrayマップを試してください:

 $map = array(
    1 => "Sunday Funday! What COMMITMENT to going out!",
    2 => "The start of what's sure to be a rough week. Drink away your sorrows.",
    3 => "Epic night! SO many themes at the bars!",
    4 => "...",
 );

その後、コードは非常に単純になります。

 echo $map[ $day ];

(理想的にはissetチェックを使用します。しかし、開発段階では、PHP は抜けているエントリに関するヒントを提供するのに十分賢いです。入力値が既に制約/アサートされている場合は、とにかく必要ありません。)

于 2012-05-06T03:08:43.520 に答える
2

比較演算子は==and not=です。

また、この状況ではよりクリーンなこのルックアップ テーブル アプローチを試してください。

$day_msg = array(
    1 => "Sunday Funday! What COMMITMENT to going out!",
    2 => "The start of what's sure to be a rough week. Drink away your sorrows.",
    3 => "Epic night! SO many themes at the bars!",
    4 => "Hump day!! But seriously, what are you doing...? Aren't you too hungover from last night?",
    5 => "Thirsty Thursday!! It's close enough to the weekend... right?"
    6 => "It's Friiiiiiday, Friiiiiiiday, Gotta get down on Friiiiiiiiiday!",
    7 => "It's FRATurday! Go have some fun!"
);
echo "<p>";
echo $day_msg[$day];
于 2012-05-06T03:03:04.583 に答える
2

あなたはこのようなすべての条件を作りたい

            if ($day == 1) {
                echo "Sunday Funday! What COMMITMENT to going out!";
            } elseif ($day == 2) {
                echo "The start of what's sure to be a rough week. Drink away your sorrows.";
            } elseif ($day == 3) {
                echo "Epic night! SO many themes at the bars!";
            } elseif ($day == 4) {
                echo "Hump day!! But seriously, what are you doing...? Aren't you too hungover from last night?";
            } elseif ($day == 5) {
                echo "Thirsty Thursday!! It's close enough to the weekend... right?";
            } elseif ($day == 6) {
                echo "It's Friiiiiiday, Friiiiiiiday, Gotta get down on Friiiiiiiiiday!";
            } elseif ($day == 7) {
                echo "It's FRATurday! Go have some fun!";

        } 
于 2012-05-06T03:04:20.610 に答える
1

あなたは最初に正しいと思ったのですが、2 つの等号が必要です。

于 2012-05-06T03:03:38.503 に答える