1. ホーム
  2. twig

[解決済み] [Solved] Twig: in_array or similar possible within if statement?

2022-04-04 10:21:51

質問

を使っています。 小枝 をテンプレート化するエンジンとして、私は本当にそれを愛しています。しかし、今私は、私が発見したよりも簡単な方法で間違いなく達成可能でなければならない状況に遭遇しています。

今あるのは、こんな感じです。

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

私が求めているのは、もっとこういったものです。

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

まだ見ぬ実現方法があるのでしょうか?

独自の拡張機能を作成する必要がある場合、test関数内でmyVarにアクセスするにはどうすればよいですか?

ありがとうございました。

解決方法は?

2つ目のコードブロックの2行目を、以下のように変更するだけです。

{% if myVar is in_array(array_keys(someOtherArray)) %}

になります。

{% if myVar in someOtherArray|keys %}

はコンテナメントオペレータで キー 配列のキーを返すフィルタです。