Gałązka do pętli dla tablic z kluczami

152

Używam Twig i mam tablicę z kluczami takimi jak:

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

Chciałbym uzyskać klucz (1,2,3,8,9)i zawartość (alpha, bravo, charlie, delta, echo)w pętli, aby uzyskać całą wartość tej tablicy.

Jak rozwiązać ten problem?

Guillaume
źródło
1
Czy próbowałeś przeszukiwać pętle PHP? Użyj foreachpętli.
Josh
3
Nie ma go w PHP, jest w Twig w pliku szablonu!
Guillaume
3
Słusznie. Czy próbowałeś szukać pętli TWIG? twig.sensiolabs.org/doc/tags/for.html
Josh

Odpowiedzi:

324

Znalazłem odpowiedź:

{% for key,value in array_path %}
    Key : {{ key }}
    Value : {{ value }}
{% endfor %}
Guillaume
źródło
3
Oto link do oficjalnej dokumentacji: twig.sensiolabs.org/doc/tags/…
Kevin Jantzer
57

Oto przykład na stronie SensioLab w fortagu:

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

http://twig.sensiolabs.org/doc/tags/for.html#iterating-over-keys

dkinzer
źródło
1
Ten przykład nie obejmuje iteracji kluczy tablicy, zobacz te powyżej
user2019515
15

Są to rozszerzone operacje (np. Sortowanie, odwracanie) dla jednowymiarowych i dwuwymiarowych tablic w ramach Twig:

Tablica 1D

Bez sortowania kluczy i odwracania

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

Sortowanie kluczy

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

Sortowanie kluczy i odwracanie

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

Tablice 2D

Bez sortowania kluczy i odwracania

{% 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 %}

Sortowanie kluczy w macierzy zewnętrznej

{% 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 %}

Sortowanie kluczy zarówno w tablicach zewnętrznych, jak i wewnętrznych

{% 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 %}

Sortowanie kluczy w macierzy zewnętrznej i sortowanie kluczy oraz odwracanie w macierzy wewnętrznej

{% 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 %}

Sortowanie kluczy i odwracanie w szyku zewnętrznym i sortowanie kluczy w szyku wewnętrznym

{% 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 %}

Sortowanie kluczy i odwracanie w macierzy zewnętrznej i wewnętrznej

{% 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 %}
Emma
źródło
2

Chyba chcesz wykonać „Iterację po kluczach i wartościach”

Jak mówi tutaj dokument , po prostu dodaj "| klucze" do wybranej zmiennej, a stanie się to magicznie.

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

Wyszukiwanie przed zapytaniem nigdy nie boli :)

imcoddy
źródło
4
Nie pokazałeś przykładu użycia "| kluczy" w swojej odpowiedzi.
Adambean,
6
Daję Ci 10, ponieważ masz 308 punktów, ale odpowiadasz „Wyszukiwanie przed zapytaniem nigdy nie boli”, więc
wyciągam