Веточка для петли для массивов с ключами

152

Я использую Twig, и у меня есть массив с ключами, как это:

array[1] = "alpha"
array[2] = "bravo"
array[3] = "charlie"
array[8] = "delta"
array[9] = "echo"

И я хотел бы получить ключ (1,2,3,8,9)и содержимое (alpha, bravo, charlie, delta, echo)в цикле, чтобы получить все значения этого массива.

Как мне решить эту проблему?

Гийом
источник
2
Вы пытались искать циклы PHP? Используйте foreachцикл.
Джош
3
Это не в PHP, это в Twig в файле шаблона!
Гийом
4
Справедливо. Вы пытались искать петли TWIG? twig.sensiolabs.org/doc/tags/for.html
Джош

Ответы:

324

Я нашел ответ:

{% for key,value in array_path %}
    Key : {{ key }}
    Value : {{ value }}
{% endfor %}
Гийом
источник
4
Вот ссылка на официальные документы: twig.sensiolabs.org/doc/tags/…
Кевин Янцер
15

Это расширенные операции (например, сортировка, обратное) для одномерных и двумерных массивов в среде Twig:

1D Array

Без сортировки ключей и обратного

{% for key, value in array_one_dimension %}
    <div>{{ key }}</div>
    <div>{{ value }}</div>
{% endfor %}

Key Sort

{% for key, value in array_one_dimension|keys|sort %}
    <div>{{ key }}</div>
    <div>{{ value }}</div>
{% endfor %}

Ключ сортировки и обратного

{% for key, value in array_one_dimension|keys|sort|reverse %}
    <div>{{ key }}</div>
    <div>{{ value }}</div>
{% endfor %}

2D массивы

Без сортировки ключей и обратного

{% for key_a, value_a in array_two_dimension %}
    {% for key_b, value_b in array_two_dimension[key_a] %}
        <div>{{ key_b }}</div>
        <div>{{ value_b }}</div>
    {% endfor %}
{% endfor %}

Сортировка ключей по внешнему массиву

{% for key_a, value_a in array_two_dimension|keys|sort %}
    {% for key_b, value_b in array_two_dimension[key_a] %}
        <div>{{ key_b }}</div>
        <div>{{ value_b }}</div>
    {% endfor %}
{% endfor %}

Сортировка ключей на внешних и внутренних массивах

{% for key_a, value_a in array_two_dimension|keys|sort %}
    {% for key_b, value_b in array_two_dimension[key_a]|keys|sort %}
        <div>{{ key_b }}</div>
        <div>{{ value_b }}</div>
    {% endfor %}
{% endfor %}

Сортировка ключей по внешнему массиву и сортировка ключей и обратная по внутреннему массиву

{% for key_a, value_a in array_two_dimension|keys|sort %}
    {% for key_b, value_b in array_two_dimension[key_a]|keys|sort|reverse %}
        <div>{{ key_b }}</div>
        <div>{{ value_b }}</div>
    {% endfor %}
{% endfor %}

Key Sort and Reverse на внешнем массиве и Key Sort на внутреннем массиве

{% for key_a, value_a in array_two_dimension|keys|sort|reverse %}
    {% for key_b, value_b in array_two_dimension[key_a]|keys|sort %}
        <div>{{ key_b }}</div>
        <div>{{ value_b }}</div>
    {% endfor %}
{% endfor %}

Ключ сортировки и реверса на внешней и внутренней матрице

{% for key_a, value_a in array_two_dimension|keys|sort|reverse %}
    {% for key_b, value_b in array_two_dimension[key_a]|keys|sort|reverse %}
        <div>{{ key_b }}</div>
        <div>{{ value_b }}</div>
    {% endfor %}
{% endfor %}
Эмма
источник
2

Я предполагаю, что вы хотите сделать "Перебор ключей и значений"

Как док здесь говорит, просто добавьте «| ключи» в переменной , которую вы хотите , и это будет волшебно произойти.

{% for key, user in users %}
    <li>{{ key }}: {{ user.username|e }}</li>
{% endfor %}

Поиск никогда не повредит, прежде чем спрашивать :)

imcoddy
источник
5
Вы не показали пример использования «| keys» в своем ответе.
Adambean
7
Я даю вам 10, потому что у вас есть 308 баллов, но вы отвечаете: «Поиск никогда не повредит, прежде чем спрашивать» - отстой, поэтому я его
Брайан Меллор