31

Twigの配列で重複したアイテムを削除するには?

のような小枝に配列値があります。

{{ set array = ["testA","testB","testA","testC","testB"]  }}

重複したアイテムを削除して、testA、testB、testC のみを使用したい

{% for name in array%}

 //skip the duplicate items and use only testA,testB,testC

{% endfor %}

どうすれば作れますか?

4

7 に答える 7

16

この場合、@Webberig が言ったように、ビューをレンダリングする前にデータを準備することをお勧めします。しかし、より複雑なプロセスがあり、ビューに関連している場合は、Twig 拡張機能を作成できます。拡張機能を使用すると、コードは次のようになります。

MyTwigExtension.phpTwig バージョン 1.12 以降の場合:

/**
 * {@inheritdoc}
 */
public function getFunctions()
{
    return array(
        new \Twig_SimpleFunction('array_unset', array($this, 'arrayUnset'))
    );
}

1.12 より前の Twig バージョンを使用している場合は、MyTwigExtension.php代わりにこれを使用します。

/**
 * {@inheritdoc}
 */
public function getFunctions()
{
    return array(
        'array_unset' => new \Twig_Function_Method($this, 'arrayUnset')
    );
}
/**
 * Delete a key of an array
 *
 * @param array  $array Source array
 * @param string $key   The key to remove
 *
 * @return array
 */
public function arrayUnset($array, $key)
{
    unset($array[$key]);

    return $array;
}

小枝:

{% set query = array_unset(query, 'array_key') %}
于 2014-10-24T07:42:24.997 に答える
-3

inオペレーターは封じ込めテストを実行します。

左オペランドが右オペランドに含まれる場合、true を返します。

{% if name in array %}

http://twig.sensiolabs.org/doc/templates.html#containment-operator

于 2013-07-22T13:13:36.840 に答える