php 如何在Twig中转换数组块

de90aj5v  于 2023-11-16  发布在  PHP
关注(0)|答案(3)|浏览(100)

我想把下面这行从PHP转换成树枝我试过很多方法,但没有使用任何人可以指导我如何做。

<?php foreach (array_chunk($images, 4) as $image) { ?>

字符串

<?php if ($image['type'] == 'image') { ?>

ycl3bljg

ycl3bljg1#

使用Twig内置的batch()过滤器

**batch filter**将原始数组拆分为多个块。查看以下示例以获得更好的说明:

{% set items = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] %}

<table>
{#The first param to batch() is the size of the batch#}
{#The 2nd param is the text to display for missing items#}
{% for row in items|batch(3, 'No item') %}
    <tr>
        {% for column in row %}
            <td>{{ column }}</td>
        {% endfor %}
    </tr>
{% endfor %}
</table>

字符串
这将表示为:

<table>
    <tr>
        <td>a</td>
        <td>b</td>
        <td>c</td>
    </tr>
    <tr>
        <td>d</td>
        <td>e</td>
        <td>f</td>
    </tr>
    <tr>
        <td>g</td>
        <td>No item</td>
        <td>No item</td>
    </tr>
</table>

Reference

bqf10yzr

bqf10yzr2#

array_chunk是内置在twig作为slice-过滤器

{% for image in images|slice(0,4) %}
    {% if image.type == 'image' %}
        {# I am an image #}
    {% endif %}
{% endfor %}

字符串
您可以通过将if移动到for-loop中来缩短上面的示例

{% for image in images|slice(0,4) %}
    {% if image.type == 'image' %}
        {# I am an image #}
    {% endif %}
{% endfor %}


documentation

pgccezyw

pgccezyw3#

你可以使用Twig中的空块来添加else子句。下面是如何做的:

{% for image in images|slice(0, 4) if image.type == 'image' %}
   {# I am an image #}
{% else %}
  {# No images found #}
{% endfor %}

字符串
在这个例子中,如果没有图像匹配条件(image.type == 'image'),else中的块将被执行,指示“No images found”。

相关问题