変数の受け渡し
マリリン・マンソンを探せ!2
(改良版。未完成です)
マリリンマンソンを探せ!ですが、レベルに応じてボタンが増えて行く、を実装しようとしたのですが、レベルが上がる途中で止まってしまい、クリア不可能状態です。
1問正解するたびにレベルを上げる…という仕様なのですが。
ハマってしまった…ああ、こんな状況前にもあったかも…しかし原因がわからん。
<?php print "<center><h1>マリリン・マンソンを探せ!2</h1><br>"; //本物のマリリン $maririn = array("マリリン・マンソン"); //偽物のマリリン $dummy = array("マリリソ・マンソン","マソソソ・マンソン","マリリリ・マンソン","マソリソ・マンソン","マンソン・マンソン","マンソン・マリリソ","マリソソ・マンソン","マソリソ・マンソン","マンソン・マリリソ","マソソソ・マソソソ","マリリン・マリリン","マンリン・マンリン","マリリリ・マリリリ","マンソン・マリリリ","マソソリ・マソソリ"); //レベルに応じてボタン数が変わる $level = array(4,20,30,40); $newmaririn = $maririn; $ans = $_POST['ans'] ; $start = $_POST['start']; $level_no = 0; //スタートボタン if($start == null && $ans == null){ print "<form method=post action=maririn2.php>"; print "<input type=submit style=width:140px name=start value=start>"; print "</form>"; } elseif($start == "start"){ //ボタン表示 btn_sakusei(); } elseif($ans != null){ //レベルあげ $level_no++; hantei(); } //ボタンの作成 function btn_sakusei () { global $maririn,$newmaririn,$level,$dummy,$ans,$start,$level_no; $i=0; $n=0; //必要な数だけ$dummyから追加 while ($i<=$level[$level_no]-2) { $newmaririn[]=$dummy[$n]; $i++; $n++; if ($n>=count($dummy)-1){ $n = 0; } } //シャッフル shuffle($newmaririn); //描画 print "<form method=post action=maririn2.php>"; print "<table width=300 border=0><td>"; foreach ($newmaririn as $value){ print "<input type=submit style=width:140px name=ans value=$value>"; } print "</td></table></form>"; print "</center>"; //デバッグ用 print_r($level_no); } //クリア、正解不正解の判定 function hantei(){ global $level,$ans,$level_no; //フォーム受け取り if ($ans == "マリリン・マンソン" && $level_no < count($level) ){ print "正解!"; btn_sakusei(); }elseif ($ans != "マリリン・マンソン"){ print "間違いです!"; print "<br><br><br><a href=maririn2.php>もう1回</a>"; } elseif($ans == "マリリン・マンソン" && $level_no == count($level) ){ print "<br><br><br>クリア<br><a href=maririn2.php>もう1回</a>"; }else{ } } ?>