0

これにはおそらく非常に簡単な修正方法がありますが、私は PHP の初心者であり、非常に無知です。私はこの問題に頭を悩ませようとしてきましたが、役に立ちませんでした。コードは次のとおりです。

echo $slot['slot_type'];
echo "<br><br>";
if ($slot['slot_type']='tree')          echo "This place is full of life, and can be used for hunting, gathering, logging, or other activities.";
if ($slot['slot_type']='town_hall')     echo "The town hall houses the governors, and is propriety of the King.";
if ($slot['slot_type']='farm1')     echo "Townspeople attempt to grow a selection of wild plants on these crops, hoping for a steady food supply.";
if ($slot['slot_type']='farm2')     echo "Farming is hard work, but a full storehouse of food is a great comfort.";

の最初の行echo $slot['slot_type'];は、「if」ステートメントが機能しない理由を理解しようとする試みでした。ただし、適切な文字列 (この場合は "tree") が出力されます。

したがって、実際には、提案されたテキスト文字列の 1 つを表示する代わりに、ブラウザーは IF ステートメントを完全に無視したかのように 4 つすべてを表示します。繰り返しますが、このようなばかげた質問のように見えることをお尋ねして申し訳ありません。

4

6 に答える 6

4

次のように使用する必要があります。

if ($slot['slot_type']=='tree')

$slot['slot_type']比較する代わりに値を挿入しています。

于 2012-07-27T14:53:02.497 に答える
3

ステートメントで代入演算子 を使用してい=ます。if比較演算子を使用する必要があります==

これがどのように機能するかについての詳細:ifステートメントは、指定された条件を評価して、一致するかどうかを確認します。現在の割り当て演算子を使用すると、PHP エンジンは実際にそのコマンドを完了します (つまり、値を に割り当てtreeますslot_type)。コマンドが正常に完了したため、true が返されます。ifその後、ステートメントの残りの部分が実行されます。残りのifステートメントでも同じことが起こり (エラーなしで値を再割り当てしているためslot_type)、他のブランチも実行されます。

于 2012-07-27T14:53:28.430 に答える
3

=すべてのシングルを==または他の論理チェックに変更する必要があります。

$slot['slot_type']基本的に行っていることは、常に true を返す条件の右側に値を割り当てることです。

ここでphpマニュアルを読んでくださいhttp://uk.php.net/manual/en/language.operators.php

余談ですが、ステートメントifを使用して構造を作成する方がよい場合があります。switch

于 2012-07-27T14:56:31.533 に答える
1

= を == に変更します。これ: = は変数値を与える (代入) ためだけであり、この == はそれを何かと比較するためのものです。

于 2012-07-27T14:59:23.677 に答える
1

私の見解: 常に php.net をタブで開いてください:

http://uk3.php.net/manual/en/language.operators.assignment.php

http://uk3.php.net/manual/en/language.operators.comparison.php

于 2012-07-27T14:56:06.873 に答える
0

ケース 1: = (代入)

$var = 'hello';

ケース 2: ==

型ジャグリング後の等価性

if(0 == "a") {
    print("hi");
}

* 文字列 "a" は実際には PHP によって 0 に変換されるため、"hi" が出力されます。

ケース 3: ===

ID のテスト (型は同じでなければなりません)

if(0 === "a"){
    print("hi");
}

* 2 つのオペランドが明らかに同じ型ではないため、"hi"は出力されません。

あなたの場合、等しいかどうかをテストするためにケース 2 が必要です。または、ケース 3 を使用することもできます。

于 2012-07-27T14:58:57.793 に答える