【问题标题】:If/or statement throwing error in php 5.3.10php 5.3.10 中的 if/or 语句抛出错误
【发布时间】:2018-03-01 02:35:03
【问题描述】:

我有一个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 / || 声明,这似乎工作正常。也不是我错误地插入了错误类型的空格之类的,我已经手动重写了多次代码

【问题讨论】:

  • 您的代码看起来不错。可能是 if 语句之前的问题。检查 if 上方的行
  • 能否显示整个页面代码
  • 错误显示了初始 if 语句的确切行。我还用我的完整标记更新了问题。

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


【解决方案1】:

我尝试了@Poiz 答案,它有效。有点怀疑,我再次尝试了自己的原始代码,现在也可以了。再次出现人为错误。可能是一些非法版本的空格或制表符。

【讨论】:

  • 感谢@Emil Østervig 的开放和真诚...这里的目标是您找到解决问题的最佳甚至最佳解决方案(如何和来自谁只是次要考虑因素)。再次感谢您确认以下建议的选项可能不是最好的,但也不值得投反对票。 保持真诚 + 敞开心扉,因为它比有史以来最伟大的头脑更有价值。干杯伴侣?☝️✌️
【解决方案2】:

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

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

【讨论】:

  • 感谢您的建议。看到一个替代方案总是好的,它可能是多么奇怪。我试过你的代码,它有效。然后我尝试用我的原始代码替换它,现在不知何故它也起作用了。现在我不得不质疑我的理智。我从来没有真正想过保存这样的条件状态,但我确信我可以在有很多重复或其他情况的某个时候使用它。
猜你喜欢
  • 2015-01-05
  • 2015-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-16
  • 2017-05-07
  • 2014-06-27
  • 1970-01-01
相关资源
最近更新 更多