很抱歉,虽然论坛上已经有相关问题,但似乎没有一个问题适用于我的情况。显然这种语法有问题,但我无法发现它。我已经搞乱了一段时间,没有运气。我想这与尝试确定变量的值有关?这是代码......
<?php if( $page == 'Who We Are' ) { echo 'nothing works'; } ?>
<?php elseif( $page == 'Leadership' ) { echo 'please help'; } ?>
<?php else { echo 'this doesnt matter, because it never gets to this point!'; } ?>
$ page变量动态设置为显示页面标题,print_r确认它正确返回标题。任何线索?
答案 0 :(得分:1)
这可能是PHP解释器中永远无法修复的错误。 PHP期望'if'语句中的任何替代选项都紧跟在它们适用的语句的右括号旁边。你在这里有效地说的是:
START_PHP_PROCESSOR()
if (mystatement == 'mycheck') dosomething();
END_PHP_PROCESSOR()
START_PHP_PROCESSOR()
elseif (mystatement == 'mycheck2') dosomething2();
END_PHP_PROCESSOR
中断解析器会让人感到困惑。它无法弄清楚应该附加的'if'在哪里。
解决问题的最佳(也许是最丑陋的)方法是使用记录的:(冒号)替代控制块语法,如下所示:
<?php if( $page == 'Who We Are' ): echo 'nothing works'; ?>
<?php elseif( $page == 'Leadership' ): { echo 'please help'; } ?>
<?php else: echo 'this doesnt matter, because it never gets to this point!'; ?>
<?php endif; ?>
这在PHP文档中的this page中有记录,旨在使模板中的控件块更容易使用。
答案 1 :(得分:0)
我认为这会解决它:
<?php if( $page == 'Who We Are' ) {
echo 'nothing works';
}elseif( $page == 'Leadership' ) {
echo 'please help';
}else {
echo 'this doesnt matter, because it never gets to this point!';
} ?>
使用php标签分解if / elseif可能会导致问题。
答案 2 :(得分:0)
如果你有错误,你会看到类似这样的错误消息:
解析错误:语法错误,第3行testfile.php中的意外'elseif'(T_ELSEIF)
基本上它告诉你的是你所拥有的不是正确的PHP。原因是当你终止php-tag时,你将终止第一个if语句。
所以php看到的是:
if( $page == 'Who We Are' ) { echo 'nothing works'; }
//end current if-else control structure
//Below is illegal.
elseif( $page == 'Leadership' ) { echo 'please help'; }
else { echo 'this doesnt matter, because it never gets to this point!'; }
如果你想拥有一个涵盖几个php语句的控制结构,即<?php /*code*/ ?>
,你应该阅读this,你最终会得到这样的结果:
<?php if( $page == 'Who We Are' ): { echo 'nothing works'; } ?>
<?php elseif( $page == 'Leadership' ): { echo 'please help'; } ?>
<?php else: { echo 'this doesnt matter, because it never gets to this point!'; } ?>
<?php endif; ?>