意外的其他...这段代码有什么问题?

时间:2014-03-04 22:46:38

标签: php if-statement

很抱歉,虽然论坛上已经有相关问题,但似乎没有一个问题适用于我的情况。显然这种语法有问题,但我无法发现它。我已经搞乱了一段时间,没有运气。我想这与尝试确定变量的值有关?这是代码......

<?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确认它正确返回标题。任何线索?

3 个答案:

答案 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; ?>