【问题标题】:PHP foreach loop mark upPHP foreach 循环标记
【发布时间】:2014-11-04 13:55:19
【问题描述】:

我有一个输出一系列项目的 PHP foreach 循环。

我想要实现的是一些代码(一个 div)包裹在项目 1 和 2 以及包裹 3 和最后一项。

这里是 PHP:

<?php foreach ($this->item->extra_fields as $key=>$extraField): ?>

      <div class="<?php echo ($key%2) ? "odd" : "even"; ?> type<?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>">
        <span class="itemExtraFieldsValue"><?php echo JHTML::_('content.prepare', $extraField->value); ?></span>
        <div class="clearfix"></div>
      </div>

      <?php $counter++; endforeach; ?>

关于如何实现这一目标的任何想法?

非常感谢。

【问题讨论】:

  • 所以你是说你想要容器 DIV 包装每 2 个 extraField 项目?
  • 您是问@prodigitalson 上面问的问题,还是需要123last 包裹的物品?
  • 我需要以下内容:
    item 1, item 2
    item3 - last item(可以是从 4 到 14 的任何值)

标签: php joomla


【解决方案1】:

也许是这样,请原谅我的 PHP 有点生疏了。

<?php foreach ($this->item->extra_fields as $key=>$extraField): ?>

<?php 
    $len = count($this->item->extra_fields);
    if ($key == 1 || $key == 2 || $key == 3 || $key == len) {
        echo "<div>";
    }
?>

  <div class="<?php echo ($key%2) ? "odd" : "even"; ?> type<?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>">

    <span class="itemExtraFieldsValue"><?php echo JHTML::_('content.prepare', $extraField->value); ?></span>

    <div class="clearfix"></div>

  </div>

<?php 
    if ($key == 1 || $key == 2 || $key == 3 || $key == len) {
        echo "</div>" ;
    }
?>    

<?php $counter++; endforeach; ?>

可能必须考虑列表的长度,因此您的最后一次检查可能是len + 1,而您的前 3 次检查可能是(0、1 和 2),这取决于 $key 值是什么。

您的代码的$counter++ 部分在foreach 中的作用有点令人困惑,也许您应该将它用于您的模数并代替密钥。

尽管编写解决方案很困难,因为我认为您的代码 sn-p 不完整,了解我们正在循环的数据是什么以及仅具有前 3 个和包裹在 div 中的最后一项。

【讨论】:

    猜你喜欢
    • 2016-09-26
    • 2012-07-19
    • 2015-12-10
    • 1970-01-01
    • 2014-03-15
    • 1970-01-01
    • 2019-12-17
    • 2015-07-03
    • 2016-10-25
    相关资源
    最近更新 更多