2014-02-26 35 views
0

Im循环遍历一个对象数组,然后尝试拆分其中一个元素,在这种情况下,我想将空间上的邮政编码拆分。 IE浏览器。 'AB1 1AB'应该是'AB1'。Twig - 尝试拆分数组元素

{% for result in resultset %} 
      {{ result.postcode|split(' ') }} 
    {% endfor %} 

抛出我的 '数组串错误'

只是想:

{{ result.postcode[0] }} 

抛出我 '不可能访问密钥[0]上一个字符串varaible' 错误。

,只是这样做:

{{ result.postcode }} 

没有给我的错误,与为什么嫩枝认为字符串是一个数组,当我尝试把它分解邮政编码显示为'AB1 1AB'

回答

1

从官方文档:

分裂过滤器由给定的分隔符分割字符串, 返回字符串列表:

{{ "one,two,three"|split(',') }} 
{# returns ['one', 'two', 'three'] #} 

所以,把你的代码,你可以这样做:

{% for result in resultset %} 
    {{ set myArray = result.postcode|split(' ') }} 
    {{ myArray[0] }} {# Will output "AB1" #} 
{% endfor %} 

来源:TWIG Split filter

+0

我只是自己想出了这件事(发布后14秒)总是这样。 :)虽然这工作,我不明白为什么。当result.postcode可以作为字符串输出时,它如何被视为一个数组? – Kiksy

+0

'result.postcode'是一个'string'。但是如果你“分割”它,返回的对象就是一个“字符串列表”。所以,如果你把它变成一个变量(比如myArray),你将能够显示所有的数组值(分割结果),它们是'myArray [0] =>“AB1”'和'myArray [1 ] =>“1AB”'。我希望我已经帮助你:) –

+0

感谢您的帮助。从Twig文档:**在内部,Twig使用PHP展开** - 从PHP文档 - **返回字符串数组**,而不是**列表**。混乱!我们去了。 – Kiksy

0

这是一个老问题,但真正的问题是,你问Twig使用{{...}}块,以显示你的分裂的结果。您应该使用{%...%}块和set标签,如documentation中所述。

如果您只想显示某个零件,可以使用split[first][2]过滤器或slice