Foreach with if / else在它之外的功能

时间:2013-11-05 13:21:21

标签: php arrays joomla joomla3.0

我正在创建一个Joomla模板(Joomla 3),你们中的一些人可能有这方面的经验,并会认识到我遇到的问题。当您将模块插入模板并将其留空时,它仍然使用一些空间。为了防止这种情况,我想添加一个变量CSS类。由于解决方案使用带有if else的数组:

模块位置数组

$modules = array(1 => 'modulename', 'modulename2', 'modulename3');

Foreach模块名称为0,显示为无

foreach ($modules as $module)
    if ($this->countModules($module) == '0') {
        $display = ' display-block';
    } else {
        $display = ' display-none';
    }

<section class="<?php echo $display['modulename'] ?>">   
<jdoc:include type="modules" name="modulename" />
</section>

是否有可能将$ display与$ display ['modulename']链接起来,因为它们是更多的数组?是否有一种ID从我的foreach链接到我的['modulename']?

2 个答案:

答案 0 :(得分:1)

如果我理解正确,你想检查模块数是否为0?如果它为0那么你会隐藏模块吗?使用此代码,您可以实现这一目标。

$moduleDisplays = array();
foreach ($modules as $module) {
    if ($this->countModules($module) == '0') {
        $moduleDisplays[$module] = ' display-block';
    } else {
        $moduleDisplays[$module] = ' display-none';
    }
}

<section class="<?php echo $moduleDisplays['modulename'] ?>">   
<jdoc:include type="modules" name="modulename" />
</section>

另一种方法:

$moduleDisplays = array();
foreach ($modules as $module) {
    $moduleDisplays[$module] = ($this->countModules($module) == '0') ? ' display-block' : ' display-none';
}

<section class="<?php echo $moduleDisplays['modulename'] ?>">   
<jdoc:include type="modules" name="modulename" />
</section>

答案 1 :(得分:0)

不是添加一个确定模块是否显示的类,为什么不简单地在if语句中添加html,如下所示:

<?php
  foreach ($modules as $module) {
      if ($this->countModules($module) == '0') { ?>
          <section>   
            <jdoc:include type="modules" name="modulename" />
          </section>
      <?php } else {
          $display = '';
      }
  }
?>