如果OR不工作

时间:2014-05-28 15:46:44

标签: php

我设置了一个语句来确定是否存在drupal块,并根据可用的块数给出一个类。

<?php if($page['sidebar_first'] || $page['sidebar_second']) { 
      $contentwid= "eleven"; 
 } else { 
      $contentwid= "sixteen"; 
 } ?>

<?php if($page['sidebar_first'] && $page['sidebar_second']) { 
      $contentwid= "seventeen"; 
 } else { 
      $contentwid= "sixteen"; 
 } ?>

<div id="content" class="<?php print $contentwid; ?> columns">
</div>

第二个语句工作正常,如果第一个侧栏中有一个块而第二个侧栏中有一个块,那么主要内容的类别为十七个。

问题在于OR(||)的第一个语句。如果任一侧边栏中都有一个块,那么内容总是被赋予十六级的全宽,并将侧边栏内容推到底部。

并不重要。

我知道它正确检测侧边栏,因为第二个语句完美无缺。我已正确设置其他所有内容,并将其追溯到此OR语句,该语句似乎总是导致FALSE(十六)。

我试过了||和OR,但据我所知,他们没有什么不同,只是用户偏好吗?

我很难过。

1 个答案:

答案 0 :(得分:3)

它正在执行第一个ifor)并正确设置$contentwid,但是 然后 它仍然执行第二个ifand)并失败,因此执行else,将$contentwid重置为&#34;十六岁&#34;

<?php if($page['sidebar_first'] || $page['sidebar_second']) { 
      $contentwid= "eleven"; 
 } else { 
      $contentwid= "sixteen"; 
 } elseif($page['sidebar_first'] && $page['sidebar_second']) { 
      $contentwid= "seventeen"; 
 } else { 
      $contentwid= "sixteen"; 
 } ?>

虽然您可能想要反转&#34;和&#34;和&#34;或&#34;防止and失败

 <?php if($page['sidebar_first'] && $page['sidebar_second']) { 
      $contentwid= "seventeen"; 
 } elseif($page['sidebar_first'] || $page['sidebar_second']) { 
      $contentwid= "eleven"; 
 } else { 
      $contentwid= "sixteen"; 
 } ?>