Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP语法错误_Php_Syntax - Fatal编程技术网

PHP语法错误

PHP语法错误,php,syntax,Php,Syntax,我不知道代码到底出了什么问题。这是代码和错误 错误:分析错误:语法错误,意外的'mday'(T_字符串),在第66行的C:\xampp\htdocs\project\calnedar.php中应为']' 代码: if ($count < $firstDayArray['wday'] :: $dayArray['mon] !=$month) { echo "<td>&nbsp;</td>\n"; } else { echo "&

我不知道代码到底出了什么问题。这是代码和错误

错误:分析错误:语法错误,意外的'mday'(T_字符串),在第66行的C:\xampp\htdocs\project\calnedar.php中应为']'

代码

if ($count < $firstDayArray['wday'] :: $dayArray['mon] !=$month) {
    echo "<td>&nbsp;</td>\n";
    } else {
        echo "<td>".$dayArray['mday']." &nbsp;&nbsp; </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>&nbsp;</td>\n";
    } else {
        echo "<td>".$dayArray['mday']." &nbsp;&nbsp; </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>&nbsp;</td>\n";
    } else {
        echo "<td>".$dayArray['mday']." &nbsp;&nbsp; </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>&nbsp;</td>\n";
    } else {
        echo "<td>".$dayArray['mday']." &nbsp;&nbsp; </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>&nbsp;</td>\n";
    } else {
        echo "<td>".$dayArray['mday']." &nbsp;&nbsp; </td>\n";
        $start+= ADAY;
    }