Подсчитать общее количество вхождений в подмассив с помощью Smarty

#php #arrays #count #smarty

#php #массивы #подсчитывать #smarty

Вопрос:

У меня есть этот массив:

 [attributes] => Array
            (
                [1] => Array
                    (
                        [id_attribute] => 1
                        [id_attribute_group] => 1
                        [name] => Rosso
                        [group] => Colore
                        [reference] => WD1012
                        [ean13] => 
                        [isbn] => 
                        [upc] => 
                    )

                [9] => Array
                    (
                        [id_attribute] => 24236
                        [id_attribute_group] => 9
                        [name] => 31 x 86.5 cm.
                        [group] => Dimensioni Fiore 1
                        [reference] => WD1012
                        [ean13] => 
                        [isbn] => 
                        [upc] => 
                    )

                [10] => Array
                    (
                        [id_attribute] => 24237
                        [id_attribute_group] => 10
                        [name] => 31 x 71.5 cm.
                        [group] => Dimensioni Fiore 2
                        [reference] => WD1012
                        [ean13] => 
                        [isbn] => 
                        [upc] => 
                    )

                [11] => Array
                    (
                        [id_attribute] => 24238
                        [id_attribute_group] => 11
                        [name] => 32.5 x 88 cm.
                        [group] => Dimensioni Fiore 3
                        [reference] => WD1012
                        [ean13] => 
                        [isbn] => 
                        [upc] => 
                    )

            )
  

Я хочу подсчитать значение [group] при поиске его значения по слову:

 {foreach from=$variants item=variant}
    {if $variant.group|stristr:'Dimensioni'}
        {$variant.group} 
    {/if}
{/foreach}
  

Вывод:

 Dimensioni Fiore 1
Dimensioni Fiore 2
Dimensioni Fiore 3
  

Теперь я хочу подсчитать общее количество вхождений внутри массивов (должно быть 3):

 {$variant.group|count}
  

вывод:

 1
1
1
  

Я должен подсчитывать вхождения, как если бы их было 2 или более, это должно что-то делать, но на выходе учитывается только 1 вхождение для каждого массива, а не общее количество.
Каков способ достижения этого?

Спасибо.

Ответ №1:

Для этого вы можете использовать counter :

 {counter print=false start=0 name=Dimensioni assign=dimensioniCount}
{foreach from=$variants item=variant}
    {if $variant.group|stristr:'Dimensioni'}
        {$variant.group}
        {counter name=Dimensioni}
    {/if}
{/foreach}

{if $dimensioniCount>=2}
    <h1>Do something here</h1>
{/if}