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?


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:




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

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 :)


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.