web-dev-qa-db-ja.com

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)に割り当てました

ここで、テンプレートで、配列にある各「タイプ」の量を出力する必要があります。誰かが私がこれをするのを手伝ってくれる?

8
Phil

PHP 5.3、5.4:

Smarty 3の時点で、次のことができます

{count($mydata)}

Smarty2または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+およびSmarty3を使用すると、新しいarray_column関数を使用できます。

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

これを試しましたか?:

{$mydata|@count}

ここで、countはphp関数count()を渡しています。

15
pythonian29033

次のものも使用できます。

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