ทวิสำหรับลูปสำหรับอาร์เรย์ด้วยปุ่ม


152

ฉันใช้ทวิกและฉันก็มีอาเรย์พร้อมกุญแจเช่นนี้:

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)ในลูปเพื่อรับค่าทั้งหมดของอาร์เรย์นี้

ฉันจะแก้ปัญหานี้ได้อย่างไร


1
คุณลองค้นหาลูป PHP หรือไม่ ใช้การforeachวนซ้ำ
Josh

3
มันไม่ได้อยู่ใน PHP มันอยู่ใน Twig ในไฟล์เทมเพลต!
Guillaume

3
ยุติธรรมพอสมควร คุณลองค้นหาลูป TWIG หรือไม่ twig.sensiolabs.org/doc/tags/for.html
Josh

คำตอบ:



57

มีตัวอย่างนี้ในหน้า SensioLab บนforแท็ก:

<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


1
ตัวอย่างนี้จะไม่ซ้ำไปตามคีย์อาร์เรย์โปรดดูตัวอย่างด้านบน
user2019515

15

สิ่งเหล่านี้เป็นการดำเนินการแบบขยาย (เช่นเรียงลำดับย้อนกลับ) สำหรับหนึ่งมิติและสองมิติในกรอบทวิก:

อาร์เรย์ 1D

ไม่มีการเรียงลำดับคีย์และย้อนกลับ

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

จัดเรียงคีย์

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

อาร์เรย์ 2 มิติ

ไม่มีการเรียงลำดับคีย์และย้อนกลับ

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

การเรียงลำดับคีย์และย้อนกลับบนอาเรย์ด้านนอกและการเรียงลำดับคีย์ในอาเรย์ด้านใน

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

มันไม่เจ็บที่จะค้นหาก่อนถาม :)


4
คุณไม่ได้แสดงตัวอย่างการใช้ "| คีย์" ในคำตอบของคุณ
Adambean

6
ฉันให้คุณ 10 เพราะคุณมี 308 คะแนน แต่คุณตอบว่า "มันไม่เจ็บที่จะค้นหาก่อนถาม" sucks ดังนั้นฉันจึงนำออก
Braian Mellor
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.