Twig忘记了数组键

mro*_*ock 8 php arrays symfony twig

我在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
            )

    )
Run Code Online (Sandbox Code Playgroud)

为了测试这个,我使用了以下代码

{% for key in days %}
  {{ key }}<br>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

但输出显示以下内容

0
1
2
3
4
5
6
Run Code Online (Sandbox Code Playgroud)

但它应该是这样的

1
2
3
4
18
19
31
Run Code Online (Sandbox Code Playgroud)

看起来twig使用新索引创建一个新数组.有没有办法从数组中获取正确的索引?

随着var_dump($days)在PHP中,我可以看到右手食指,让"问题"到小枝有关.

小智 15

你也可以尝试这个:

{% for key,value in users %}
    {{ key }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

或者可以查看for循环中定义的"循环"对象

http://twig.sensiolabs.org/doc/tags/for.html


aza*_*zat 8

也许这个

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

默认情况下,循环迭代序列的值.您可以使用键过滤器迭代键:

<h1>Members</h1>
<ul>
  {% for key in users|keys %}
    <li>{{ key }}</li>
  {% endfor %}
</ul>
Run Code Online (Sandbox Code Playgroud)


mro*_*ock 5

它与twig无关,它是使用embeddedDocuments在doctrine-mongodb中的已知缺口.Doctrine无法处理embeddedDocuments中的键值,它会从0开始重新排序键,因此会忽略正确的键值.无论如何,谢谢你的帮助:).