使用 smarty 获取数组中的值计数
Posted
技术标签:
【中文标题】使用 smarty 获取数组中的值计数【英文标题】:get value count in an array with smarty 【发布时间】:2012-10-09 06:17:38 【问题描述】:我有一个名为 $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)
现在,在模板中,我需要打印数组中每种“类型”的数量。谁能帮我做这个?
【问题讨论】:
数组中的每个元素都会有一个类型索引吗?你想计算所有这些还是只计算那些值大于零的? 是的,会有的。并且值总是大于零。 【参考方案1】: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']
【讨论】:
我确实有 Smarty 3,但我如何从 count($mydata) 获取各种“类型”数量?【参考方案2】:你也可以使用:
if $myarray|@count gt 0.../if
【讨论】:
【参考方案3】:你试过了吗?:
$mydata|@count
其中 count 是通过 php 函数 count()
【讨论】:
它对我有用...但是 |count 和 |@count 有什么区别 @Poonam Bhatt,我其实不知道,当我回答这个问题时,我只是做了一些研究,编写了几行代码并想出了这个,那是很久以前的事了 @PoonamBhatt 引用:The "@" applies the modifier directly to the array instead of each individual element.
参见:Smarty FAQ
所以,要按预期工作,应该使用@count 来计算数组...谢谢。以上是关于使用 smarty 获取数组中的值计数的主要内容,如果未能解决你的问题,请参考以下文章
如何获取从 Knex 返回的值(数组中的对象,即数组中的对象)