1. ホーム
  2. php

[解決済み] smarty で配列の値数を取得する

2022-02-15 18:40:29

質問

という配列があります。 $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)

さて、テンプレートの中で、配列の中にそれぞれのquot;type"がどれだけあるのかを表示する必要があります。誰かこれをするのを手伝ってくれませんか?

どのように解決するのですか?

PHP 5.3、5.4。

Smarty 3 では、以下のことが可能です。

{count($mydata)}

Smarty 2や3でもパイプで処理することができます。

{$mydata|count}

type"値をカウントアップするには、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']}