J'utilise Twig comme moteur de template et je l'adore vraiment. Cependant, maintenant j'ai couru dans une situation qui doit certainement être réalisable d'une manière plus simple que je ne l'ai trouvée.
Ce que j'ai en ce moment, c'est ceci:
{% 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 %}
Ce que je recherche, c'est quelque chose comme ceci:
{% 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 %}
Y a-t-il un moyen d'accomplir cela que je n'ai pas encore vu?
Si je dois créer ma propre extension, comment puis-je accéder à myVar dans la fonction de test?
Merci de votre aide!
Réponses:
Il vous suffit de changer la deuxième ligne de votre deuxième bloc de code de
à
in est l'opérateur de confinement et définit un filtre qui renvoie les clés d'un tableau.
la source
{% if item not in array %}
et non{% if not _entry.id in array %}
, donc c'est différent de cela{% if not var is null %}
.{% if someOtherArray.myVar is defined %}
( twig.sensiolabs.org/doc/tests/defined.html )Juste pour clarifier certaines choses ici. La réponse qui a été acceptée ne fait pas la même chose que PHP in_array .
Pour faire la même chose que PHP in_array, utilisez l'expression suivante:
Si vous voulez annuler cela, vous devez utiliser ceci:
la source
in_array()
en brindille.Essaye ça
la source
un autre exemple suivant @jake stayman:
la source
Cela devrait vous aider.
Plus d'informations: http://twig.sensiolabs.org/doc/tags/for.html
la source
Bien que les réponses ci-dessus soient correctes, j'ai trouvé quelque chose de plus convivial en utilisant l'opérateur ternaire.
Si quelqu'un a besoin de travailler pour foreach,
la source