2014-02-26 48 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