Ranting untuk loop untuk array dengan tombol

152

Saya menggunakan Twig dan saya memiliki array dengan kunci seperti ini:

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

Dan saya ingin mendapatkan kunci (1,2,3,8,9)dan konten (alpha, bravo, charlie, delta, echo)dalam satu lingkaran untuk mendapatkan semua nilai array ini.

Bagaimana saya mengatasi masalah ini?

Guillaume
sumber
1
Apakah Anda mencoba mencari loop PHP? Gunakan foreachlingkaran.
Josh
3
Ini bukan di PHP, melainkan di Ranting di file templat!
Guillaume
3
Cukup adil. Apakah Anda mencoba mencari loop TWIG? twig.sensiolabs.org/doc/tags/for.html
Josh

Jawaban:

324

Saya menemukan jawabannya:

{% for key,value in array_path %}
    Key : {{ key }}
    Value : {{ value }}
{% endfor %}
Guillaume
sumber
3
Berikut tautan ke dokumen resmi: twig.sensiolabs.org/doc/tags/…
Kevin Jantzer
57

Ada contoh ini di halaman SensioLab pada fortag:

<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
sumber
1
Contoh ini tidak mengulangi kunci array, lihat yang di atas
user2019515
15

Ini adalah operasi yang diperluas (misalnya, urutkan, mundur) untuk array satu dimensi dan dua dimensi dalam kerangka Twig:

Array 1D

Tanpa Sortir dan Balik Kunci

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

Sortir Kunci

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

Sortir dan Balik Kunci

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

Array 2D

Tanpa Sortir dan Balik Kunci

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

Sortir Kunci pada Larik Luar

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

Sortir Kunci pada Array Luar dan Dalam

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

Sortir Kunci pada Larik Luar & Sortir Kunci dan Terbalik pada Array Dalam

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

Sortir Kunci dan Terbalik pada Array Luar & Sortir Kunci pada Array Dalam

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

Sortir dan Balik Kunci pada Array Luar dan Dalam

{% 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
sumber
2

Saya kira Anda ingin melakukan "Iterating over Keys and Values"

Seperti yang dikatakan dokumen di sini , cukup tambahkan "| kunci" pada variabel yang Anda inginkan dan itu akan terjadi secara ajaib.

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

Tidak ada salahnya mencari sebelum bertanya :)

imcoddy
sumber
4
Anda belum menunjukkan contoh menggunakan "| kunci" dalam jawaban Anda.
Adambean
6
Saya memberi Anda 10 karena Anda memiliki 308 poin, tetapi Anda menjawab "Tidak ada salahnya untuk mencari sebelum bertanya" menyebalkan, jadi saya mengambilnya
Braian Mellor