#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}