10

我有一个名为的数组$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)

现在,在模板中,我需要打印数组中每种“类型”的数量。谁能帮我做到这一点?

4

3 回答 3

24

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']}
于 2012-10-18T18:06:15.443 回答
20

你试过这个吗?:

{$mydata|@count}

其中 count 正在传递 php 函数 count()

于 2012-10-18T18:00:37.813 回答
5

您还可以使用:

{if $myarray|@count gt 0}...{/if}
于 2013-10-29T11:27:19.923 回答