2011-06-01 111 views
8

我在Symfony2中有一個奇怪的問題。我使用下面的數組:樹枝忘記陣列鍵

[days] => Array 
    (
     [1] => Array 
      (
       [money] => 9 
      ) 

     [2] => Array 
      (
       [money] => 21 
      ) 

     [3] => Array 
      (
       [money] => 38 
      ) 

     [4] => Array 
      (
       [money] => 6 
      ) 

     [18] => Array 
      (
       [money] => 6 
      ) 

     [19] => Array 
      (
       [money] => 3 
      ) 

     [31] => Array 
      (
       [money] => 11 
      ) 

    ) 

測試這個我用下面的代碼

{% for key in days %} 
    {{ key }}<br> 
{% endfor %} 

但輸出顯示以下

0 
1 
2 
3 
4 
5 
6 

,但它應該是這樣的

1 
2 
3 
4 
18 
19 
31 

Looks li ke twig用新索引創建一個新數組。有沒有辦法從數組中獲取正確的索引?

var_dump($days)在PHP中,我可以看到正確的索引,所以「問題」與樹枝有關。

+0

'{{key.money}}'? – igorw 2011-06-01 08:01:25

+0

嗨igorw,我不想要錢的價值,我需要從父數組中的密鑰。 – mrohnstock 2011-06-01 08:18:13

+1

嘗試'{%debug days%}'',我敢打賭這是twig中的值('array_values','array_shift'等)。機會是重組索引陣列。是第一個值顯示了你傳入'$ twig_env-> render($ days);'? – 2011-10-20 14:45:58

回答

5

這與枝條無關,這是使用嵌入文檔的doctrine-mongodb中已知的缺陷。 Doctrine無法處理來自embeddedDocuments的鍵值,它將重新排序從0開始的鍵,並會忽略正確的鍵值。無論如何謝謝你的幫助:)。

8

也許這

http://www.twig-project.org/doc/templates.html

默認情況下,在序列的值的循環迭代。您可以通過使用按鍵過濾器上的按鍵進行迭代:

<h1>Members</h1> 
<ul> 
    {% for key in users|keys %} 
    <li>{{ key }}</li> 
    {% endfor %} 
</ul> 
+0

感謝您的回答,同樣的問題與|鍵... :( – mrohnstock 2011-06-01 08:19:51

+0

@Monty我試圖模擬您的設置,並且此解決方案爲我工作(順便說一句,{{key}}根本不起作用)...你可以發佈你在動作中使用的代碼嗎? – Problematic 2011-06-03 17:15:57

+0

嗨有問題,我在github/twig上發佈了整個代碼:https://github.com/fabpot/Twig/issues/347。我忘了第二個價值在於,作爲azat的形象,但它也行不通。 – mrohnstock 2011-06-09 12:07:12