每个人都遇到语法错误.即使是有经验的程序员也会犯错误.对于新手来说,这只是学习过程的一部分.但是,通常很容易解释错误消息,例如:
PHP Parse错误:语法错误,第20行的index.php中出现意外的'{'
意想不到的符号并不总是真正的罪魁祸首.但是行号给出了从哪里开始寻找的粗略想法.
始终查看代码上下文.语法错误往往隐藏在提及或在前面的代码行.将您的代码与手册中的语法示例进行比较.
虽然不是每个案例都匹配另一个案例 然而,有一些常规步骤可以解决语法错误.这篇文章总结了常见的陷阱:
意外的T_FUNCTION ......
意外T_IF
意外T_FOREACH
意外T_FOR
意外T_WHILE
意外T_DO
意外T_PRINT
意外T_ECHO
意外的T_INLINE_HTML ......
意外的T_PAAMAYIM_NEKUDOTAYIM ......
意外的T_OBJECT_OPERATOR ......
意外的T_DOUBLE_ARROW ......
意想不到的T_SL ......
意外的T_BOOLEAN_OR ...
意外的T_BOOLEAN_AND ......
意外的T_NS_SEPARATOR ......
这是根据官方文档的信息:
可以在PHP中使用四对不同的开始和结束标记.其中两个,
<?php ?>并且<script language="php"> </script>始终可用.另外两个是短标签和ASP样式标签,可以从php.ini配置文件打开和关闭.因此,虽然有些人发现短标签和ASP样式标签很方便,但它们的便携性较差,一般不推荐.
在我的经验,大多数服务器都启用短标记.打字
<?=
Run Code Online (Sandbox Code Playgroud)
打字要方便得多
<?php echo
Run Code Online (Sandbox Code Playgroud)
程序员的便利是一个重要因素,为什么不推荐他们?
什么是最好的,首选的写作方式,如速记单线,如:
expression ? $foo : $bar
Run Code Online (Sandbox Code Playgroud)
情节扭曲:我需要echo $foo或echo $bar.任何疯狂的伎俩?:)
我正在尝试使用tenary运算符将if else块实现到echo语句中.如果在echo语句中阻塞,我已经跟着它了.但是我不知道我的错了:
echo "<td><input type='checkbox' name='money' id='money'".(($money == 'yes')?'"checked"':" "."value='yes' /></td>";
Run Code Online (Sandbox Code Playgroud) 如果语句与echo结合使用,我会写一行代码:
<?php echo ( true ) ? 'true' : 'false'; ?>
Run Code Online (Sandbox Code Playgroud)
今天我确实改变了现有的多行if语句,并在语句中echo结束了,这给了我一个解析错误:
<?php ( true ) ? echo 'true' : echo 'false'; ?>
Run Code Online (Sandbox Code Playgroud)
但是,使用print而不是echo使其工作.我觉得它有效,因为它print是一个功能.更新:print不是一个函数,它只是表现得像一个,这意味着它有一个返回值.
<?php ( true ) ? print 'true' : print 'false'; ?>
Run Code Online (Sandbox Code Playgroud)
我不明白的是回声不起作用的原因.据我所知,上面的语法只是一个常见的if语句的简写,所以这不应该工作:
if (true) echo 'true'; else echo 'false';
Run Code Online (Sandbox Code Playgroud)
但确实如此.谁知道?
我真的很头疼.我需要将if语句放在一个echo中(这个echo在一个函数中,它实际上是一个表单提交)
这是我的部分代码的示例.在这种情况下,我怎样才能把if语句放在我的回声中?
<?php echo '<td><select id="depuis" name="depuis">
<option value=\'4\' <?php if(isset($_POST[\'depuis\']) && $_POST[\'depuis\'] == \'4\'){ echo \'selected\'; } else { echo ''; } ?> ></option>
<option value=\'1\' <?php if(isset($_POST[\'depuis\']) && $_POST[\'depuis\'] == \'1\'){ echo \'selected\'; } else { echo ''; } ?> >2 ans et moins</option>
<option value=\'2\' <?php if(isset($_POST[\'depuis\']) && $_POST[\'depuis\'] == \'2\'){ echo \'selected\'; } else { echo ''; } ?> >2 à 5 ans</option>
<option value=\'3\' <?php if(isset($_POST[\'depuis\']) && $_POST[\'depuis\'] == \'3\'){ echo \'selected\'; } else { …Run Code Online (Sandbox Code Playgroud) 我试图在已打开的echo函数中添加if/else语句,但页面显示为空白.如果我正确连接,不太确定.
echo '<span class="year-tab-'.$x.' '.if ($single_year==$year_selected) { echo "" } else { echo "display-none" }.' ">';
Run Code Online (Sandbox Code Playgroud) php ×7
echo ×2
coding-style ×1
debugging ×1
forms ×1
html ×1
if-statement ×1
parse-error ×1
parsing ×1
shorthand ×1
string ×1
syntax ×1
syntax-error ×1