0

我只是缩小了仅在某些环境中发生的这些奇怪错误之一。

下面的代码在我的 linux php 5.3.6 默认安装和 windows php 5.4.3 默认安装上解析正常,但在我们使用 Windows php 5.3.6 的某些 windows 机器上失败。

我们得到的信息是:

解析错误:语法错误,第 7 行 C:\bogus.php 中出现意外的“}”

第 7 行是“}”。

我只能认为这个错误是由 php.ini 设置引起的。有谁知道问题是什么?

<?php
if(!empty($data['foo'])) {
    ?>
    <div>
        <?=$data['bar'];if(!empty($data['foo'])) {?> (Foo: <?=$data['foo'];?>) <?php }?></div>
    <?php
}
?>      
4

3 回答 3

4

这看起来很奇怪:

<?=$data['bar'];if(!empty($data['foo'])) {?>

您正在混合<?=多个语句。如果我是你,我会尽量避免这里的短标签。

但无论如何,我认为这意味着 Windows 机器没有short_open_tags在 php.ini 中启用。启用它,您的问题可能会消失。

于 2012-05-22T17:10:48.920 回答
2

我会更改所有这些{...}以使您的生活更轻松:

<?php if(!empty($data['foo'])):?>
    <div>
        <?php echo $data['bar'];
         if(!empty($data['foo'])):?> 
              (Foo: <?php echo $data['foo']?>) 
        <?php endif?>
    </div>
<?php endif?>      
于 2012-05-22T17:11:11.650 回答
1
<?php
if(!empty($data['foo'])) {
    echo '<div>'.$data['bar'];if(!empty($data['foo']))echo 'Foo:'.$data['foo']; 
echo '</div>';
}
?>

使用回声功能

于 2012-05-22T17:12:51.403 回答