質問: PHPでジャンケンゲームを作成しています。 基本 ジャンケンしよう"; $a=rand(1,3); if($a==1){ print ""; }elseif($a==2){ print ""; }else{ print ""; } ?> それぞれ3つの画像グー、チョキ、パーの画像を3通りランダムに出すのですが、 if文の中のif($a==1)とif($a==2)の部分をif($a=1)、if($a=2)とするとぐーしか出てきません。 =では変数$aはどちらでもないのでelseになると考えたのでパーしか出てこないと思っていましたが結果はグーしか表示されませんでした。 A==BはAはBに等しいときにTrueを返すというのははかりますが なぜそうなるかを知りたいです。 PHPを学習し始めて初歩的な質問かと思いますがどうかよろしくお願いします。
回答: if文は中の式をtrue/falseで評価を行っています。 PHPマニュアルより:`式は論理値で評価されます` > > if($a=1)、if($a=2) > > > これだと「$aという変数に値を代入した結果」の評価になります。 これでfalseとなることってまずありえないので、 最初の`if($a=1)`が有効となり、下記が実行されます。 ``` print ""; ``` ifで使われるのは比較演算子ですね。 確かに`==`とすべきところを間違えて `=`としてしまってロジックが崩れている質問者さんをよく見ます。 今のうちに演算子について押さえておくと良いかもしれません。 * 演算子