Saya menggunakan Twig sebagai mesin templating dan saya sangat menyukainya. Namun, sekarang saya telah menjalankan dalam situasi yang pasti harus dicapai dengan cara yang lebih sederhana daripada yang saya temukan.
Apa yang saya miliki sekarang adalah ini:
{% for myVar in someArray %}
{% set found = 0 %}
{% for id, data in someOtherArray %}
{% if id == myVar %}
{{ myVar }} exists within someOtherArray.
{% set found = 1 %}
{% endif %}
{% endfor %}
{% if found == 0 %}
{{ myVar }} doesn't exist within someOtherArray.
{% endif %}
{% endfor %}
Apa yang saya cari adalah sesuatu yang lebih seperti ini:
{% for myVar in someArray %}
{% if myVar is in_array(array_keys(someOtherArray)) %}
{{ myVar }} exists within someOtherArray.
{% else %}
{{ myVar }} doesn't exist within someOtherArray.
{% endif %}
{% endfor %}
Apakah ada cara untuk mencapai ini yang belum saya lihat?
Jika saya perlu membuat ekstensi saya sendiri, bagaimana saya bisa mengakses myVar dalam fungsi tes?
Terima kasih atas bantuan Anda!
Jawaban:
Anda hanya perlu mengubah baris kedua dari blok kode kedua Anda dari
untuk
in adalah operator kontainmen dan kunci filter yang mengembalikan kunci array.
sumber
{% if item not in array %}
dan tidak{% if not _entry.id in array %}
, jadi ini berbeda dari ini{% if not var is null %}
.{% if someOtherArray.myVar is defined %}
( twig.sensiolabs.org/doc/tests/defined.html )Hanya untuk membersihkan beberapa hal di sini. Jawaban yang diterima tidak melakukan hal yang sama dengan PHP in_array .
Untuk melakukan hal yang sama dengan PHP in_array gunakan ekspresi berikut:
Jika Anda ingin meniadakan ini, Anda harus menggunakan ini:
sumber
in_array()
di ranting.Coba ini
sumber
Contoh lain mengikuti @jake stayman:
sumber
Itu akan membantu Anda.
Info lebih lanjut: http://twig.sensiolabs.org/doc/tags/for.html
sumber
Meskipun jawaban di atas benar, saya menemukan sesuatu yang lebih ramah pengguna saat menggunakan operator ternary.
Jika seseorang perlu melakukan foreach maka,
sumber