PHP でクイズ作成

http://dotinstall.com/lessons/quiz_php/1801
を参考にクイズ作成
arrayにクイズを格納
question に問題
options にクイズの選択肢
answer には正解
でOK
ソースにすると
$quiz = array(
‘question’=>’百式は何色?’,
‘options’=>array(‘赤’, ‘青’, ‘金’, ‘銀’, ‘黒’),
‘answer’=>2);
クイズの問題は echo で出力
回答するためのフォーム作成
選択肢は foreach() で表示
<p>Q: <?php echo $quiz[‘question’];?></p>
<ul>
<?php foreach ($quiz[‘options’] as $option) :?>
<li><?php echo $option;
?></li>
<?php endforeach;?>
</ul>
これで
<?php echo $quiz[‘question’];?>

問題が表示される
foreach ($quiz[‘options’] as $option)
で配列内容を1つずつ
$option に代入しながら終わるまでループする
<li><?php echo $option; ?></li>
となっているので
ループが終わるまで
リストが作られ続ける
すると




というようになる
このやりかたはAPI関連でリスト表示するときによくつかう
youtube とかお店リストとか
でクイズなので、ラジオボタンをつける
<input type=”radio” name=”answer” value=”<?php echo $key; ?>”>
これでラジオボタンがでる
さらに、回答の番号も把握したいので
foreach ($quiz[‘options’] as $option)

foreach ($quiz[‘options’] as $key=>$option)
にする
これで、1とかの番号がつくようだ
$key=>$option
にすることで
配列の関係にできる
つまり、キーと値の関係ができる
これもAPIでよく使う
そしてクイズの回答判定
送っているのはPOSTなので
判定をif で行う
if($_SERVER[“REQUEST_METHOD”]==”POST”)
まずは、これでPOSTか判定している
次に、回答と答え合わせ
これは三項演算子を使う
$message =($_POST[‘answer’]== $quiz[‘answer’])?”正解”:”不正解”;
これでOK
三項演算子は
(条件)? true の時の処理 : false のときの処理 ;
というかき方をする
これで、もし答えが間違っているなら
$message の中身は 不正解
$_POST[‘answer’]== $quiz[‘answer’])
であるなら、
$message の中身は 正解
というようになる
$quiz[‘answer’]

$quiz = array(
‘question’=>’百式は何色?’,
‘options’=>array(‘赤’, ‘青’, ‘金’, ‘銀’, ‘黒’),
‘answer’=>2);
の answer のことで
$_POST[‘answer’]

<form action=”” method=”post”>
の中で選んだラジオボタンの答えになる
そして、定番だけど
PHP で 出力するには
echo でできるので
echo $message;
とすれば
正解か不正解か表示されるというもの
最後に
exit するのを忘れずに
次はクイズの選択肢をシャッフル
これは
shufle() を使う
クイズの選択肢をシャッフルしたいので
shuffle($quiz[‘options’]);
でOK
三項演算子は
(条件)? true の時の処理 : false のときの処理 ;
というかき方をする
これで、もし答えが間違っているなら
$message の中身は 不正解
$_POST[‘answer’]== $quiz[‘answer’])
であるなら、
$message の中身は 正解
というようになる
$quiz[‘answer’]

$quiz = array(
‘question’=>’百式は何色?’,
‘options’=>array(‘赤’, ‘青’, ‘金’, ‘銀’, ‘黒’),
‘answer’=>2);
の answer のことで
$_POST[‘answer’]

<form action=”” method=”post”>
の中で選んだラジオボタンの答えになる
そして、定番だけど
PHP で 出力するには
echo でできるので
echo $message;
とすれば
正解か不正解か表示されるというもの
最後に
exit するのを忘れずに
次はクイズの選択肢をシャッフル
これは
shufle() を使う
クイズの選択肢をシャッフルしたいので
shuffle($quiz[‘options’]);
でOK
あと、配列をシャッフルするのに2だと答えがおかしいので
answer=>2
から
answer=>’金’
というようにする
あと、変更に伴い、配列の添字にしている
$key じゃなくて $option になるので
これも変更
<li><input type=”radio” name=”answer” value=”<?php echo $key;?>”>
から
<li><input type=”radio” name=”answer” value=”<?php echo $option;?>”>
<?php foreach ($quiz[‘options’] as $key=>$option) :?>

<?php foreach ($quiz[‘options’] as $option) :?>
となる