重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

$_POST['SA']は選択した答えです。(文字列)
$_POST['ca']は正確な答えです。(文字列)
$_POST['SA']と$_POST['ca']を比較し、
同じ文字列であれば点数をつけます。
そうじゃなければ点数は付けません。

以下のPHPのプログラムを作りましたが、上手く文字列を比較できません。


<?php
$count = count($_POST['q']);
for ($i = 0; $i < $count; $i++) {
if(strcmp($_POST['SA'][$i],$_POST['ca'][$i]) == 0 ){
$point = 0;
}else{
$point = 15;
}

A 回答 (2件)

こんな感じじゃない?



<form method="post">
<input type="hidden" name="ca[]" value="ans1">
<input type="text" name="SA[]" value="ans1"><br>
<input type="hidden" name="ca[]" value="ans2">
<input type="text" name="SA[]" value="ans2"><br>
<input type="hidden" name="ca[]" value="ans3">
<input type="text" name="SA[]" value="ans3"><br>
<input type="hidden" name="ca[]" value="ansx">
<input type="text" name="SA[]" value="ans4">←間違い<br>
<input type="submit" value="go"><br>
<?php
error_reporting(E_ALL);
$point=0;
$count = (isset($_POST['SA']) and is_array($_POST['SA']))?count($_POST['SA']):0;
for ($i = 0; $i < $count; $i++) {
if(strcmp($_POST['SA'][$i],$_POST['ca'][$i]) !== 0 ){
$point += 0;
}else{
$point += 15;
}
}
print $point;
    • good
    • 0

> 上手く文字列を比較できません。



具体的に、何を期待して、それがどうなっているのですか?

$_POSTに期待通りにデータが入っていますか?
期待と違うデータが入っているなら、動作も期待通りにはなりません。


> $_POST['SA']は選択した答えです。(文字列)

だとすると、
$_POST['SA'][$i]
は$i文字目ということになり、 $_POST['ca']の $i文字目と比較する、というプログラムになっています。
それでよろしいのでしょうか?

また
$count = count($_POST['q'])
は何を数えているのでしょうか?

$_POST['q'] は何かの配列
$_POST['SA']は文字列の配列
$_POST['ca']は文字列の配列
なら、
$_POST['SA']の$i番目の文字列と、$_POST['ca']の $i番目の文字列を比較
という意味になりますが。


あとは、おそらくstrcmpの使い方を間違えています。
http://php.net/manual/ja/function.strcmp.php
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!