0

在 smarty [据我所知的 v2] 中,我想不出我可以在 foreach 循环中显示一些数据。IE。将数组的前半部分和数组的后半部分分成两个不同的 div 元素。

这就是我目前所处的位置,也是我想要完成的逻辑..

    <div>
{foreach from=$feature.variants item="var" name="var"}
    {if $smarty.foreach.var.iteration == ($smarty.foreach.var.total % 2)}
    </div>
    <div class="ty-product-feature__value">
    {/if}
    {$var.variant}
{/foreach}
    </div>

除了第 2 行,我的一切都是正确的。当当前循环迭代等于 foreach 循环总次数的一半时,我无法弄清楚如何正确设置它以激活 [意味着无论它是数组中的项目,它都会放一半在一个 div 元素中,另一半在第二个 div 元素中。

此外,这不是一个优先级,但是当存在不均匀的数组总数并且它不能平均分成两半时会发生什么?

非常感谢您!这超出了我的专业知识,我相信有人比我更了解这一点。

4

1 回答 1

0

% 是模数,所以条件是每两个项目触发一次,这不是你想要的。而是尝试检查当前迭代是否在数组中的项目总数的中间。使用 ceil 因此除法的结果始终是向上取整的整数:

{assign var="loop_middle" value=$feature.variants|@count/2}
{foreach from=$feature.variants item="var" name="var"}
   {$var.variant}
   {if $smarty.foreach.var.iteration == $loop_middle|ceil}
      </div>
      <div class="ty-product-feature__value">
   {/if}
{/foreach}

所以,如果你有 11 个项目,你最终会得到两个 div,一个有 6 个项目,另一个有 5 个

于 2016-09-07T14:15:09.067 回答