2012-10-18 12 views
7

Ich habe ein Array $mydata genannt, die wie folgt aussieht:erhalten Zählwert in einem Array mit Smarty

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 
    ) 
) 

ich das Array zugewiesen haben $smarty->assign("results", $mydata)

nun in der Vorlage Smarty, ich brauche um zu drucken, wie viel von jedem "Typ" in dem Array ist. Kann mir jemand dabei helfen?

+0

Wird es immer einen Index für den Typ in jedem Element im Array geben? und möchten Sie alle oder nur solche mit einem Wert größer als Null zählen? – pythonian29033

+0

ja, wird es. Und die Werte sind immer höher als Null. – Phil

Antwort

16

PHP 5.3, 5.4:

Ab Smarty 3 Sie können

tun
{count($mydata)} 

Sie können es auch in Smarty 2 oder 3:

{$mydata|count} 

Um "type" Werte zählen Sie werden entweder in PHP oder Smarty durch das Feld zu gehen haben:

{$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+:

Mit PHP 5.5+ und Smarty 3 können Sie die neue array_column Funktion:

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

Ich habe Smarty 3, aber wie bekomme ich die verschiedenen Zahlen von "Typ" von {count ($ mydata)}? – Phil

+0

Ich denke, ich habe Ihre Frage mit meinem Bearbeiten beantwortet. –

14

haben Sie versucht, dies ?:

{$mydata|@count} 

wo Zählung der PHP-Funktion count ist vorbei()

+0

Es funktionierte für mich ... aber was ist der Unterschied zwischen ** | zählen ** und ** | @ zählen ** –

+0

@Poonam Bhatt, Ich weiß eigentlich nicht, als ich diese Frage beantwortete ich nur etwas Forschung , codiert ein paar Zeilen und dachte dies, und das war schon eine Weile her – pythonian29033

+10

@PoonamBhatt Zitat: 'Das" @ "wendet den Modifikator direkt auf das Array anstelle von jedem einzelnen Element.Siehe: [Smarty FAQ] (http://smarty.incutio.com/?page=SmartyFrequentlyAskedQuestions#template-1) – jens

4

Sie können auch verwenden:

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