Ich benutze Twig als Template-Engine und ich liebe es wirklich. Jetzt bin ich jedoch in eine Situation geraten, die definitiv einfacher zu erreichen sein muss als ich gefunden habe.
Was ich gerade habe, ist Folgendes:
{% 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 %}
Was ich suche, ist eher so etwas:
{% 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 %}
Gibt es eine Möglichkeit, dies zu erreichen, die ich noch nicht gesehen habe?
Wie kann ich innerhalb der Testfunktion auf myVar zugreifen, wenn ich eine eigene Erweiterung erstellen muss?
Danke für Ihre Hilfe!
Antworten:
Sie müssen nur die zweite Zeile Ihres zweiten Codeblocks von ändern
zu
In ist der Containment-Operator und Keys ein Filter, der Arrays-Schlüssel zurückgibt.
quelle
{% if item not in array %}
und nicht{% if not _entry.id in array %}
, also ist es anders{% if not var is null %}
.{% if someOtherArray.myVar is defined %}
( twig.sensiolabs.org/doc/tests/defined.html )Nur um hier ein paar Dinge zu klären. Die akzeptierte Antwort entspricht nicht PHP in_array .
Verwenden Sie den folgenden Ausdruck, um dasselbe wie PHP in_array zu tun :
Wenn Sie dies negieren möchten, sollten Sie Folgendes verwenden:
quelle
in_array()
in Zweigen zu machen.Versuche dies
quelle
ein weiteres Beispiel nach @jake stayman:
quelle
Es sollte dir helfen.
Weitere Informationen: http://twig.sensiolabs.org/doc/tags/for.html
quelle
Obwohl die obigen Antworten richtig sind, habe ich bei der Verwendung des ternären Operators einen benutzerfreundlicheren Ansatz gefunden.
Wenn jemand foreach durcharbeiten muss, dann
quelle