代码之家  ›  专栏  ›  技术社区  ›  miCRoSCoPiC_eaRthLinG

php 5.3.0(xampp)上的可选条件语法(if else)失败

  •  2
  • miCRoSCoPiC_eaRthLinG  · 技术社区  · 16 年前

    我最近升级到了XAMPv1.7.2,它将php 5.3推给了我。除此之外,我所有的httpd.conf和php.ini都被清除了(我想当然地认为这个版本将像所有早期的xampp版本一样升级)。不管怎样,我花了一段时间重新配置所有服务——但现在我遇到了一个有趣的问题。

    在我的工作场所中使用的这个自写CMS使用了很多if-else的可选条件语法,即。

    if( condition ): ?>
        <some html />
    <?php else: ?>
        <some other html />
    <?php endif;
    

    这曾经与XAMPP 1.7.1一起提供的php 5.2.x一起工作得很好,现在突然,这些代码块产生了这个错误:

    分析错误:语法错误,意外 在其他方面

    我没有以任何方式修改我的脚本——在php 5.2.x中,这个脚本完全可以正常工作。

    所以我的问题是,php 5.3是否允许这种可选条件?还是必须在配置文件中打开一些隐藏选项?

    请注意,我不使用短标签,所以这里没有问题。

    2 回复  |  直到 12 年前
        1
  •  4
  •   too much php    16 年前

    虽然if/else语法在5.3中没有改变,但是语法的许多其他部分也改变了。您应该在所讨论的else语句之前检查这些行,以查看其他新的语法特性是否会混淆解析器。

    如果你不知道问题在哪里,你可以开始有系统地删除代码行,直到你剩下以下三行:

    <?php if(condition): ?>
    <?php else: ?>
    <?php endif ?>
    

    更新: 你真的应该用 short_open_tag 打开,因为您看到的语法错误是如果您在某个地方使用此代码将得到的结果:

    <? if(condition): ?>
    <?php else: ?>
    <?php endif ?>
    
        2
  •  0
  •   James Skidmore    16 年前

    是的,php 5.3允许 alternative syntax 用于控制结构,包括条件语句。

    我建议在一两个地方用常规语法替换替代语法来调试,看看它是否解决了问题。如果是这样,那么你就肯定知道问题所在。