• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHP、初心者なのですが)

PHP初心者が練習中のプログラムでの数字の位置一致の判定がうまくいかない問題について

このQ&Aのポイント
  • PHP初心者が練習中のプログラムで、num1とnum2の入力値の各桁の数字が等しくその数字の位置がすべて同じなら「4個」という表示を、3つだけ等しくその数字の位置が同じなら「3個」という表示をするようにしたいが、うまくいかない問題が発生している。
  • 具体的な例として、1234(num1)1239(num2)という場合、本来は「3個」という表示になるはずだが、「4個」という表示が出てしまう。
  • 正しい表示にするためにはどのように修正すればよいか、アドバイスをお願いしたい。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

<?php $num1 = $_SESSION['num1']; $num2 = $_SESSION['num2']; /* POSTされてくる値は全て文字列になりますし、 このゲームの場合は数字は数字であって数字でなく多分 各桁ごとに独立した記号ですよね。 PHPでは、文字列に対して、配列のようにアクセスすることができます。 例) $var = "abcd"; echo $var[2]; //「c」と表示される */ $hits = 0; for($i = 0; $i < 3; $i++){ if($num1[$i] == $num2[$i]){ $hits++; } } echo "あっていた数は{$hits}個"; ?> 全て一つづつの変数に展開するのも良いと思いますが、見づらくなる場合もあるので、配列やループ文を上手く使って回避することをオススメします。

hitosashi
質問者

お礼

ちゃんと表示できました! こういうやり方もあるんですね。 とても参考になりました。

関連するQ&A