ユーザーが最大 4 つの項目 (私のテストでは食品) を選択できる HTML チェックボックスを使用して、かなり単純なテストを試みています。選択されたアイテムは PHP スクリプトに渡され、そこで選択されたアイテムと照合して、ユーザーが何を選択したかを判断します。
それに基づいて、if ステートメントを使用してユーザーが何を選択したかを判断し、今後の処理のためにバイナリ値を配列に書き込みます (これは次に取り組むプロジェクトです)。
私の問題は、if
ステートメントが真実になることができないことです。コードからわかるように、私はtrim
余分な文字をすべて取り除き、一連のステートメント を入力する前にコマンドvar_dump
とコマンドを使用して内容を確認していました。print
if
その時点まではすべて問題ないように見えますが、if
ステートメントは決して真実ではありません (それぞれの中に echo ステートメントを入れて、それを伝えています)。以下は、問題のコードの一部と、4 つの食品をすべて選択したときの PHP スクリプトの出力です。洞察をいただければ幸いです。
ps - strcmp
IF ステートメントの代わりに試してみましたが、役に立ちませんでした。
PHP:
for ($i=0; $i<count($userChecked ); $i++) {
// var_dump to show what exactly was passed
trim($userChecked[$i]);
var_dump($userChecked[$i]);
print "<pre>[".$userChecked[$i]."]</pre>";
// now go through each checked item to see where the match is
// echo that we have a match and set the corresponding array value to 1
if ($userChecked[i]=="soup") {
echo "the user wants soup<br />";
$pref_array[0] = '1';
}
if ($userChecked[i]=="salad") {
echo "the user wants salad<br />";
$pref_array[1] = '1';
}
if ($userChecked[i]=="cheese") {
echo "the user wants cheese<br />";
$pref_array[2] = '1';
}
if ($userChecked[i]=="sardines") {
echo "the user wants sardines<br />";
$pref_array[3] = '1';
}
}
すべてのチェックボックスが選択されている場合の出力 (スープ、サラダ、チーズ、イワシ):
string(4) "スープ" [スープ] string(5) "サラダ" [サラダ] string(6) "チーズ" [チーズ] string(8) "いわし" [いわし]