PHP“;意外的$end“;

PHP“;意外的$end“;,php,syntax,Php,Syntax,实际上,我检查了我的代码大约一百次,但我找不到错误: 我得到的错误是: 解析错误:语法错误,第46行的/home/tennox/public_html/php/kalender.php中出现意外的$end 我试着做一个计算复活节星期日的函数,在另一个脚本中,没有其他脚本,它只是工作,但在这个脚本中不行。反过来说,同样的事情 <?php $year = isset($_POST['year']) ? intval($_POST['year']) : date('Y'); $months =

实际上,我检查了我的代码大约一百次,但我找不到错误:

我得到的错误是: 解析错误:语法错误,第46行的/home/tennox/public_html/php/kalender.php中出现意外的$end

我试着做一个计算复活节星期日的函数,在另一个脚本中,没有其他脚本,它只是工作,但在这个脚本中不行。反过来说,同样的事情

<?php
$year = isset($_POST['year']) ? intval($_POST['year']) : date('Y');
$months = array("", "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");
$days = array('So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa');
$ostern = getOsterSonntag($year);
?>
<form action="kalender.php" method="POST" target="_self">
<input type="text" name="year" value="<?php echo $year; ?>">
</form>
<table border="1" cellspacing="0">
<?php
for($y=0; $y<32; $y++) {
   echo "<tr height=\"20\">";
   for($x=1; $x<=12; $x++) {
      echo "<td width=\"5%\">";
      $date = strtotime("$y.$x.$year");
      $day = date("d", $date);
      $dayname = $days[date("w", $date)];

      if ($y == 0) {
         echo "<div align=\"center\"><b>$months[$x]</b></div>";
      } elseif ($y < date("t",$date) && !($y == 30 && $x == 2)) {
         if (date("w", $date) == 6 || date("w", $date) == 0)
            echo "<b>";
         echo "$day $dayname";
         if ($date == $ostern)
            echo "(Ostersonntag)";
         if (date("w", $date) == 6 || date("w", $date) == 0)
            echo "</b>";
      } else {
         echo "   -   ";
      }
      echo "</td>";
   }
   echo "</tr>";
}
?>
</table>

<?php
function getOsterSonntag($year) {
   $a = $year % 19;
   $b = $year % 4;
   $c = $year % 7;
   $k = floor($year / 100);
   $p = floor((8*$k + 13) / 25);
   $q = ($k / 4);
   $d = (19*$a + ((15 + $k - $p - $q) % 30)) % 30;
   $e = (2*$b + 4*$c + 6*$d + ((4 + $k - $q) % 7)) % 7;

   $ostern = 22 + $d + $e;
   if ($ostern > 31){
      $ostern -= 31;
      return strtotime("$ostern.4.$year");
   } else
      return strtotime("$ostern.3.$year");
}
?>


此错误通常意味着您错过了
}
。检查所有大括号,确保你的
{
数与
}
数相同-使用括号匹配的代码编辑器(如记事本++)可以使这变得更容易。

该错误意味着PHP已完成对代码的分析,但你忘记关闭页面中的某个符号。可能是你忘记关闭引号,括号、括号或逗号


希望这能有所帮助。

在这部分代码中,我认为您应该为其他代码添加{}

 $ostern = 22 + $d + $e;
       if ($ostern > 31){
          $ostern -= 31;
          return strtotime("$ostern.4.$year");
       } else
          return strtotime("$ostern.3.$year");
同样在这部分中,将{}放在这部分中,如下所示:

if (date("w", $date) == 6 || date("w", $date) == 0) {
      echo "<b>";
      echo "$day $dayname";
}
if(date(“w”,$date)==6 | | date(“w”,$date)==0){
回声“;
回显“$day$dayname”;
}

在本地运行代码时没有出现任何错误。我解决了我的问题-我的ftp程序(netdrive)出于某种原因刚刚截断了文件。--可能只有我一个人,但在代码风格上保持一致总是很好的。如果在一个If结构上使用方括号
{}
,那么它也应该在所有其他结构中使用……那么我什么时候必须放{},什么时候不放?我在每个if语句中都添加了它们,但仍然存在:“语法错误,第49行的/home/tennox/public_html/php/kalender.php中出现意外的$end”我多次检查了所有括号…:/我还通过添加一行解释了错误OP,这只是一个简单的
var_dump()。当我删除该行时,代码运行良好..我多次检查所有括号。。。但我会下载记事本++并尝试:)