使用smarty获取数组中的值计数

Phi*_*hil 8 php 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
    )
)
Run Code Online (Sandbox Code Playgroud)

我把数组分配给了smarty $smarty->assign("results", $mydata)

现在,在模板中,我需要打印数组中每个"类型"的数量.任何人都可以帮我这样做吗?

Mat*_*t S 20

PHP 5.3,5.4:

从Smarty 3开始,你可以做到

{count($mydata)}
Run Code Online (Sandbox Code Playgroud)

你也可以在Smarty 2或3中管它:

{$mydata|count}
Run Code Online (Sandbox Code Playgroud)

要计算"类型"值,您必须在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]}
Run Code Online (Sandbox Code Playgroud)

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']}
Run Code Online (Sandbox Code Playgroud)


pyt*_*033 15

你试过这个吗?:

{$mydata|@count}
Run Code Online (Sandbox Code Playgroud)

count传递php函数count()

  • @PoonamBhatt引用:`"@"将修饰符直接应用于数组而不是每个单独的元素.参见:[Smarty FAQ](http://smarty.incutio.com/?page=SmartyFrequentlyAskedQuestions#template-1) (10认同)

crm*_*cco 5

您还可以使用:

{if $myarray|@count gt 0}...{/if}
Run Code Online (Sandbox Code Playgroud)