如果/或语句在php 5.3.10中抛出错误

时间:2017-09-20 06:53:57

标签: php if-statement conditional version conditional-operator

我有一个if语句引发了syntax error, unexpected T_VARIABLE错误,我不明白为什么。

代码:

<?php if($contentTop || $contentLeft || $contentCenter || $contentRight): ?>
  <div>a bunch of html</div>
<?php endif; ?>

该变量包含一个空字符串或一堆html。

我尝试将||更改为or但似乎没有改变任何内容。也没有用大括号打开和关闭if语句。它似乎只在我在声明中只有一个变量时起作用。我也尝试使用!empty($contentTop)来检查变量。

服务器正在运行PHP版5.3.10-1ubuntu3.26但是据我所知,这不应该改变if语句的任何内容

编辑:

根据完整标记的要求:

<?php 
$contentTop = get_field('section2new_content');
$contentLeft = get_field('section2new_left');
$contentCenter = get_field('section2new_center');
$contentRight = get_field('section2new_right');


if( $contentTop || $contentLeft || $contentCenter || $contentRight ): ?>

    <div class="bbh-inner-section teaser-3-col" id="section2temp">
        <?php if($contentTop): ?>
            <div class="grid-container top">
                <div class="row">
                    <div class="col-sm-12">
                        <?php echo $contentTop; ?>
                    </div>
                </div>  
            </div>
        <?php endif; ?>
        <?php if($contentLeft || $contentRight || $contentCenter): ?>
            <div class="grid-container bottom">
                <div class="row">
                    <div class="col-sm-4 left">
                        <?php echo $contentLeft; ?>
                    </div>
                    <div class="col-sm-4 center">
                        <?php echo $contentCenter; ?>
                    </div>
                    <div class="col-sm-4 right">
                        <?php echo $contentRight; ?>
                    </div>
                </div>
            </div>
        <?php endif; ?>
    </div>
<?php endif; ?>

当我注意到自己有进一步向下的if / ||声明时,这似乎工作正常。这也不是我错误地插入了错误类型的空间或者说,我多次手动重写代码

2 个答案:

答案 0 :(得分:1)

我试过@Poiz的答案。有点怀疑我再次尝试了我自己的原始代码,现在也有效。人为错误再一次。也许这是一个空格或标签的非法版本。

答案 1 :(得分:0)

你愿意尝试一些有点奇怪的东西吗?无论如何,除了我们将if语句转换为三元操作之外,它与您所做的基本相同。这是因为就像你说的那样;你已经尝试了if的几乎所有组合而没有成功,除非只提供了一个条件....这里的想法只是简单地将执行主要比较的Line压缩为单个简单的布尔值,然后可以在后续if中使用。也许这对你有用,因为你的Magical if仅适用于你只有一个条件进行测试的情况......

    <?php $state = ($contentTop || $contentLeft || $contentCenter || $contentRight) ? true : false; ?>
    <?php if($state): ?>
        <div>a bunch of html</div>
    <?php endif; ?>