Smarty:当foreach达到总数的一半时,如何做X.

时间:2016-09-07 00:18:38

标签: smarty smarty2

在smarty [v2 to my knowledge]中我无法想象我可以在foreach循环中呈现一些数据。 IE浏览器。将数组的前半部分和数组的后半部分分成两个不同的div元素。

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

myInput: new FormControl();
listOne: Observable<string[]>;
listTwo: Observable<string[]>;

ngOnInit(){
    this.listOne = sharedSource
                     .switchMap(myInput => this._service.getListOne(myInput));

    this.listTwo = sharedSource
                     .switchMap(myInput => this._service.getListTwo(myInput));
}

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

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

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

1 个答案:

答案 0 :(得分: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个