【问题标题】:Creating an array within for loop with Twig使用 Twig 在 for 循环中创建数组
【发布时间】:2014-07-25 10:55:02
【问题描述】:

我正在尝试创建一个数组并将值存储在 for 循环中,但到目前为止失败了。我怎么能用 Twig 做到这一点?

我已经阅读了这些内容,但由于是 Twig 的新手,因此很难转换到我的案例中。

简单的 PHP 逻辑是这样的:

foreach ($array as &$value)
{
   $new_array[] = $value;
}

foreach ($new_array as &$v)
{
   echo $v;
}

我对 TWIG 的尝试:

{% for value in array %}
    {% set new_array = new_array|merge([value])  %}
{% endfor %}

{% for v in new_array %}
   {{ v }}
{% endfor %}

【问题讨论】:

  • 在第一个循环之前将new_array定义为数组即可:{% set new_array = [] %}
  • Twig 是定义应用程序逻辑的错误位置

标签: symfony twig


【解决方案1】:

按照Vision的建议解决了:

{% set brands = [] %}
{% for car in cars %}
    {% if car not in brands %}
        {% set brands = brands|merge([car]) %}
    {% endif %}
{% endfor %}

{% for brand in brands %}
   {{ brand }}
{% endfor %}

另外我下次会考虑 bartek 的评论。这是一次性的。

【讨论】:

    【解决方案2】:

    对于循环中的数组,我还有其他解决方案。 这个解决方案让你可以制作像 PHP 这样的数组:

    $my_array[] = array('key_1' => $value1, 'key_2' => $value_2);
    

    在这种情况下:

    {% set cars_details = [] %}
    {% for car in cars %}
         <!-- This is the line of code that does the magic -->
        {% set car = car|merge({(loop.index0) : {'color': car.color, 'year': car.year} }) %}
    {% endfor %}
    {{ car|dump }}
    

    【讨论】:

    • 您是否修改了代码以检查其是否正常工作?这比解决问题更令人困惑。
    • @Vishal Kumar Sahu 你说得对,我将不得不重新检查我的答案。
    • 我喜欢它创建一个非常具体的数组的方式!谢谢!
    猜你喜欢
    • 2014-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-25
    • 1970-01-01
    • 2019-03-18
    • 1970-01-01
    • 2013-04-30
    相关资源
    最近更新 更多