変数の受け渡し

マリリン・マンソンを探せ!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{
}
}
?>