PHP语法错误
我不知道代码到底出了什么问题。这是代码和错误 错误:分析错误:语法错误,意外的'mday'(T_字符串),在第66行的C:\xampp\htdocs\project\calnedar.php中应为']' 代码:PHP语法错误,php,syntax,Php,Syntax,我不知道代码到底出了什么问题。这是代码和错误 错误:分析错误:语法错误,意外的'mday'(T_字符串),在第66行的C:\xampp\htdocs\project\calnedar.php中应为']' 代码: if ($count < $firstDayArray['wday'] :: $dayArray['mon] !=$month) { echo "<td> </td>\n"; } else { echo "&
if ($count < $firstDayArray['wday'] :: $dayArray['mon] !=$month) {
echo "<td> </td>\n";
} else {
echo "<td>".$dayArray['mday']." </td>\n";
$start += ADAY;
}
}
if($count<$firstDayArray['wday']::$dayArray['mon]!=$month){
回音“\n”;
}否则{
回显“%$dayArray['mday']”。\n;
$start+=ADAY;
}
}
修复了['mon']的初始错误,现在显示“致命错误:类名必须是C:\xampp\htdocs\project\calnedar.php第63行中的有效对象或字符串” 这是到目前为止我的代码
<?php
define("ADAY", (60*60*24));
if (!checkdate($_POST['month'], 1, $_POST['year'])){
$nowArray = getdate();
$month = $nowArray['mon'];
$year = $nowArray['year'];
} else {
$month = $_POST['month'];
$year = $POST['year'];
}
$start = mktime (12, 0, 0, $month, 1, $year);
$firstDayArray = getdate($start);
?>
<html>
<head>
<title> Calendar </title>
</head>
<body>
<form method="post" action="<? php echo "$_SERVER[PHP_SELF}"; ?>">
<select name="month">
<?php
$months = Array("January", "February", "March", "April", "May", "June", "July", "August", "October", "November", "December");
for ($x=1; $x<= count($months); $x++) {
echo"<option value=\"$x\"";
if ($x == $month) {
echo " SELECTED";
}
echo ">".$months[$x-1]."";
}
?>
</select>
<select name="year">
<?php
for ($x=2014; $x<=2080; $x++) {
echo "<option";
if ($x == $year) {
echo " SELECTED";
}
echo ">$x";
}
echo">$x";
?>
</select>
<input type="submit" value "Submit">
</form>
<br/>
<?php
$days = Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat");
echo "<Table border=1 cellpadding=5><tr>\n";
foreach ($days as $day) {
echo "<TD BGCOLOR=\"CCCCCC\" Align=center><strong>$day</strong></td>\n";
}
for ($count=0; $count <(6*7); $count++) {
$dayArray = getdate($start);
if (($count % 7) == 0) {
if ($dayArray['mon'] != $month) {
break;
} else {
echo "</tr><tr>\n";
}
}
if ($count < $firstDayArray['wday'] :: $dayArray['mon'] !=$month) {
echo "<td> </td>\n";
} else {
echo "<td>".$dayArray['mday']." </td>\n";
$start += ADAY;
}
}
echo "</tr></table>";
?>
</body>
</html>
历法
语法高亮显示您的错误。你漏了一句话。您还使用了范围解析运算符,而不是|
或&&
:
if ($count < $firstDayArray['wday'] :: $dayArray['mon] !=$month) {
if($count<$firstDayArray['wday']::$dayArray['mon]!=$month){
应该是
if ($count < $firstDayArray['wday'] && $dayArray['mon'] !=$month) {
^^^^ HERE ^^^ HERE
if($count<$firstDayArray['wday']&&$dayArray['mon']!=$month){
^^^^这里^^^这里
您应该使用带有语法突出显示的文本编辑器或IDE。它们使捕获这些错误变得更容易。即使是像Notepad++这样的免费编辑器也能很好地完成此任务。有一个错误:
这条线
$dayArray['mon]
你需要关门
$dayArray['mon']
if($count<$firstDayArray['wday']::$dayArray['mon]!=$month){
//^--误报'
似乎您在$dayArray['mon]和::should之后错过了一个报价&&
if ($count < $firstDayArray['wday'] && $dayArray['mon'] !=$month) {
echo "<td> </td>\n";
} else {
echo "<td>".$dayArray['mday']." </td>\n";
$start += ADAY;
}
}
if($count<$firstDayArray['wday']&&$dayArray['mon']!=$month){
回音“\n”;
}否则{
回显“%$dayArray['mday']”。\n;
$start+=ADAY;
}
}
如果($count<$firstDayArray['wday']::$dayArray['mon]!=$month){
有时,最好阅读错误并尝试找出它实际上试图警告您的内容。在这种情况下,它告诉您很可能缺少一个右方括号。在大多数情况下,导致问题的总是前面的字符
所以你所要做的就是从你的问题开始,一个字符一个字符地编码,然后注意哪里有奇怪的地方
您会注意到在dayArray['mon]
中缺少一个引号,应该是这样的['mon']
这将解决你的错误
防止这些错误的一种方法是,在编译和上载代码之前,使用能够提前捕获这些错误的平台。使用优秀的IDE,如code 2或NotePad++帮助您高效编程
if ($count < $firstDayArray['wday'] :: $dayArray['mon'] !=$month) {
echo "<td> </td>\n";
} else {
echo "<td>".$dayArray['mday']." </td>\n";
$start+= ADAY;
}
if($count<$firstDayArray['wday']::$dayArray['mon']!=$month){
回音“\n”;
}否则{
回显“%$dayArray['mday']”。\n;
$start+=ADAY;
}
大家都在争抢一个简单快捷的问题:p这个问题似乎离题了,因为它是关于一个简单的语法错误。太具体了,这不是调试站点^^这个问题离题了,因为语法错误。新问题现在出现在同一段代码中“致命错误:类名必须是C:\xampp\htdocs\project\calnedar.php第63行中的有效对象或字符串“例如,代码的第一行$start+=ADAY;
几乎肯定是正确的。你的意思是$ADAY
?@Fred ii-我想你把它搞定了hanks Fred-ii-就是这样,你需要更改你接受的答案,因为这涵盖了所有内容。@user2902494同一段代码中出现了新问题“致命错误:类名必须是C:\xampp\htdocs\project\calnedar.php第63行中的有效对象或字符串“例如,代码的第一行OK兄弟,如果你可以编辑你的帖子并粘贴你现在拥有的代码,这样我就可以看一看,也可以将代码块从第60行粘贴到第65行或其他什么,以了解你的代码看起来是什么样子的,非常感谢你B工作,只要把我的答案标记为正确,那么伙计!干杯,很高兴它对你有用。”(4分钟后),您知道如何修复我的第二个错误吗尝试解释您建议的更改。没有解释的代码转储从长远来看并没有真正的帮助。实际问题是他的代码中缺少代码和1个额外的大括号,因此我将修复它。好的,很快将尝试发布更多详细信息。
if ($count < $firstDayArray['wday'] :: $dayArray['mon] !=$month) {
if ($count < $firstDayArray['wday'] :: $dayArray['mon'] !=$month) {
echo "<td> </td>\n";
} else {
echo "<td>".$dayArray['mday']." </td>\n";
$start+= ADAY;
}