Php 当我使用set作为捕获时,为什么Twig不能使用变量作为数组的索引?

Php 当我使用set作为捕获时,为什么Twig不能使用变量作为数组的索引?,php,arrays,variables,set,twig,Php,Arrays,Variables,Set,Twig,在Twig中,我可以用两种方式进行设置 {% set car = 'Honda' %} 或 第二种方式是“捕获” 当我尝试将变量用作数组中的索引时 例如 {{ cars[car].wheels | length }} 设置变量的第二种方法不起作用。为什么?在Twig中打开调试模式。 使用调试扩展来查看两种方案中的变量 第一条路 {% set car = 'Honda' %} {% debug car %} 我会告诉你,这辆车仍然是本田的 然而,第二条路 {% set car %}Hond

在Twig中,我可以用两种方式进行设置

{% set car = 'Honda' %}

第二种方式是“捕获”

当我尝试将变量用作数组中的索引时 例如

{{ cars[car].wheels | length }}

设置变量的第二种方法不起作用。为什么?

在Twig中打开调试模式。 使用调试扩展来查看两种方案中的变量

第一条路

{% set car = 'Honda' %}
{% debug car %} 
我会告诉你,这辆车仍然是本田的

然而,第二条路

{% set car %}Honda{%endset%}
{% debug car %}
我会告诉你那辆车现在是一辆

细枝标记对象([内容:受保护]=>car)

因此,如果要将变量用作数组中的键或索引,请不要使用捕获作为设置变量的方法

更新:对于大于1.5的Twig版本,请使用转储替换调试

例如:

例如:


您也可以这样使用第二种方式(您应该调整汽车变量):


@kissmyface似乎在Twig1.5中不推荐使用调试。文档建议改用dump
{% set car %}Honda{%endset%}
{% debug car %}
{% set car = 'Honda' %}
{% debug car %} 
{% set car %}Honda{%endset%}
{% debug car %}
{% set car %}Honda{%endset%}

{{ cars[car|trim].wheels | length }}