たとえばデータの持ち方を工夫してみるとこんな感じで表現できます
<?
$QA[]=array(
"Q"=>array("id"=>"q1","text"=>"質問A")
,"A"=>array(
array("key"=>1,"text"=>"回答A-1")
,array("key"=>2,"text"=>"回答A-2")
,array("key"=>3,"text"=>"回答A-3")
,array("key"=>4,"text"=>"回答A-4")
)
);
$QA[]=array(
"Q"=>array("id"=>"q2","text"=>"質問B")
,"A"=>array(
array("key"=>1,"text"=>"回答B-1")
,array("key"=>2,"text"=>"回答B-2")
,array("key"=>3,"text"=>"回答B-3")
,array("key"=>4,"text"=>"回答B-4")
)
);
$QA[]=array(
"Q"=>array("id"=>"q3","text"=>"質問C")
,"A"=>array(
array("key"=>1,"text"=>"回答C-1")
,array("key"=>2,"text"=>"回答C-2")
,array("key"=>3,"text"=>"回答C-3")
,array("key"=>4,"text"=>"回答C-4")
)
);
shuffle($QA);
$q_no=1;
foreach($QA as $arr1){
shuffle($arr1["A"]);
print "問".$q_no.")".$arr1["Q"]["text"]."<br>\n";
foreach($arr1["A"] as $arr2){
$id=$arr1["Q"]["id"]."_".$arr2["key"];
print "<INPUT type=\"radio\" id=\"".$id."\" name=\"".$arr1["Q"]["id"]."\" value=\"".$arr2["key"]."\"><label for=\"".$id."\">".$arr2["text"]."</label><br>\n";
}
$q_no++;
}
?>
補足
ありがとうございました。大成功です。 私はまだ初心者の上に、手元にある入門書にはshuffle関数は書いていませんでしたので、本当に助かりました。 ところで厚かましいのを承知でもう一つだけ伺いたいのですが、問題文自体をランダムに表示するには今回のと同じ要領でいいんでしょうか?実際に作りたいのはたくさんある問題文の中から決められた問題数が重複せずに出題されるようにしたいのです。 今回教えていただいたソースを一つのまとまりにしてランダムに表示させるよう試行錯誤をしているのですが、やはりうまくいきません。恐れ入りますが、ぜひお時間のある時にヒントをいただけたらと思います。 どうぞよろしくお願いいたします。