Arkadaşım süre aşımı olması normal, çünkü:
<?php
$b . $i="1";
?>
gibi bir kullanımda, $i değişkeni 1 değerini alır ve sonsuz döngüye girer. Değişken > değişken oluşturmak için şu şekilde yapman gerekir:

<?php
for($i=1;$i<=20;$i++){
  if(${'cevap'.$i}== 'Boş') ${'b'.$i}="1";      
  elseif (${'cevap'.$i}== ${'anahtar'.$i}) ${'d'.$i}="1"; 
  else  ${'y'.$i}="1"; 
}  
?>
Ayrıca bu şekilde bir kullanım yerine, direk doğru yanlış boş olarak kullansan daha iyi olmaz mı ? Yani şunun gibi diyelim 20 soru ise :

<?php
for($i=1;$i<=20;$i++){ 
  if($_POST['cevap'.$i]== 'Boş') $soru[$i]='B';      
  elseif ($_POST['cevap'.$i]== $anahtar[$i]) $soru[$i]='D'; 
  else  $soru[$i] = 'Y';
}   
?>