вам посчитать значения в массив с Smarty

у меня есть массив называется $mydata это выглядит так:

Array
(
[0] => Array
    (
        [id] => 1282
         [type] =>2

        )

[1] => Array
    (
        [id] => 1281
        [type] =>1
        )

[2] => Array
    (
        [id] => 1266
          [type] =>2
    )

[3] => Array
    (
        [id] => 1265
        [type] =>3
    )
)

Я назначил массив smarty $smarty->assign("results", $mydata)

Теперь, в шаблоне, мне нужно напечатать, сколько каждого "типа" есть в массиве. Кто-нибудь может мне помочь?

3 ответов


PHP 5.3, 5.4:

начиная с Smarty 3 Вы можете сделать

{count($mydata)}

вы также можете передать его в Smarty 2 или 3:

{$mydata|count}

чтобы подсчитать значения типа, вам придется пройти через массив в PHP или Smarty:

{$type_count = array()}
{foreach $mydata as $values}
    {$type = $values['type']}
    {if $type_count[$type]}
        {$type_count[$type] = $type_count[$type] + 1}
    {else}
        {$type_count[$type] = 1}
    {/if}
{/foreach}

Count of type 2: {$type_count[2]}

PHP 5.5+:

С PHP 5.5+ и Smarty 3 Вы можете использовать новый array_column функция:

{$type_count = array_count_values(array_column($mydata, 'type'))}
Count of type 2: {$type_count['2']}

ты пробовал?:

{$mydata|@count}

где count передает функцию php count ()


вы также можете использовать:

{if $myarray|@count gt 0}...{/if}