【问题标题】:Get value with Twig for loop from array使用 Twig for 循环从数组中获取值
【发布时间】:2016-12-26 08:36:38
【问题描述】:

我有一个这样的数组

'contents' => array(
              'row' => array(
                    'col-xs-6' => 'grid 1',
                    'col-xs-6' => 'grid 2'
              ),
              'row' => array(
                    'col-xs-6' => 'grid 3',
                    'col-xs-6' => 'grid 4'
              )
        )

现在我想从数组中获取密钥但失败了,我尝试了这段代码

{% for key, values in contents %}
     <div class="{{ key }}">
          {% for klass, contain in values %}
                 <div class="{{ klass }}">
                      {{ contain }}
                 </div>
          {% endfor %}
     </div>
{% endfor %}

输出:

<div class="row"><div class="col-xs-6">grid 4</div></div>

我不知道为什么它只出现一次,但如果我尝试用不同的值更改键名,它就可以工作。 请帮我。 谢谢。

【问题讨论】:

  • @Thamilan 的回答是否为您提供了所需的答案?或者你只是想让“行”在第一个 div 标签中显示为第一个类,在第二个 div 标签中显示“col-xs-6”,然后第二个 div 中的名称是“grid 1”.. . 如果是这样,可能会有一个更简单的答案。或者也许你的内容数组是固定的?
  • @AlvinBunk 是的,他做到了,但他没有给我解决方案,所以我不能接受它作为答案。是的,我希望“行”作为第一类,“col-xs-6”作为第二个 div 标签中的第二类。那么,无论数组名称冲突,我如何才能将其显示为数组的样子?
  • 我在想你可以在数组上使用 Twig 的 length function,但这可能只适用于有效的 PHP 数组。有没有办法将网格值的数量作为数字变量传递?如果是这样,有一个更好的答案。告诉我。
  • @AlvinBunk 是的。请告诉我。

标签: php arrays for-loop twig


【解决方案1】:

PHP array 应该有唯一的键。

在你的情况下,

  1. 第一个 row 被第二个 row 替换
  2. 第二行中的第一个col-xs-6 将被第二个col-xs-6 替换

因此,您的结果数组将是:

'contents' => array(
      'row' => array(
            'col-xs-6' => 'grid 4'
      )
)

【讨论】:

    【解决方案2】:

    根据您的 cmets:

    假设你传入一个名为gridCount 的变量,然后在 Twig 中你可以这样编写代码:

    {% for i in 0..gridCount %}
        <div class="row"><div class="col-xs-6">grid {{ i }}</div></div>
    {% endfor %}
    

    如果您还打算更改课程值,请告诉我。在上面,我认为你不需要。但如果它们也是动态的,那么你需要告诉我它们是如何变化的。

    【讨论】:

    • 好主意,也许我不需要类值,因为我可以将它除以 12 并将结果作为类。谢谢!
    • 不客气!如果您需要进一步的帮助,请发布另一个问题。
    猜你喜欢
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    • 2015-03-01
    • 2013-04-24
    • 2014-01-17
    • 2019-03-18
    • 2017-02-12
    相关资源
    最近更新 更多