我只是缩小了某些环境中发生的奇怪错误之一。
下面的代码解析我的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
}
?>
答案 0 :(得分:4)
这看起来很奇怪:
<?=$data['bar'];if(!empty($data['foo'])) {?>
您正在混合<?=
多个语句。如果我是你,我会尽量避免使用短标签。
但无论如何,我认为这意味着Windows机器在php.ini中没有启用short_open_tags
。启用它,您的问题可能会消失。
答案 1 :(得分: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?>
答案 2 :(得分:1)
<?php
if(!empty($data['foo'])) {
echo '<div>'.$data['bar'];if(!empty($data['foo']))echo 'Foo:'.$data['foo'];
echo '</div>';
}
?>
使用回声功能