首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在smarty中,如何检查关联数组是否为空?

在smarty中,如何检查关联数组是否为空?
EN

Stack Overflow用户
提问于 2013-04-13 19:32:50
回答 3查看 15.8K关注 0票数 2

我用谷歌搜索了一下,但找不到正确的解决方案。谁能帮我检查一下关联数组是否为空?提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-18 17:54:00

在Smarty3中,您可以使用PHP's empty() function

somefile.php

代码语言:javascript
运行
复制
<?PHP
$smarty->assign('array',array());
$smarty->display('template.tpl');

template.tpl

代码语言:javascript
运行
复制
{if empty($array)}
  Array is empty
{else}
  Array is not not empty
{/if}

输出Array is empty

票数 7
EN

Stack Overflow用户

发布于 2014-01-13 04:31:24

似乎Smarty只是检查数组是否存在。例如

somefile.php

代码语言:javascript
运行
复制
<?PHP
$smarty->assign('array',array());
$smarty->display('template.tpl');

template.tpl

代码语言:javascript
运行
复制
{if $array}
  Array is set
{else}
  Array is not set
{/if}

输出Array is set

在php中...

代码语言:javascript
运行
复制
<?PHP
$array = array();
if($array){
  echo 'Array is set';
}else{
  echo 'Array is not set';
}

输出Array is not set

为了解决这个问题,我做了一个小的变通方法:用下面的代码为smarty创建了一个修饰符:modifier.is_empty.php

代码语言:javascript
运行
复制
<?PHP
function smarty_modifier_is_empty($input)
{
    return empty($input);
}
?>

将该代码片段保存在plugins目录下的SMARTY_DIR中,名称为modifier.is_empty.php,您可以这样使用它:

template.tpl (考虑使用相同的somefile.php )

代码语言:javascript
运行
复制
{if !($array|is_empty)}
  Array is not empty
{else}
  Array is empty
{/if}

这将输出Array is empty

有关再次使用此修饰符的说明,请使用@count修饰符:

@count将计算数组中元素的数量,而此修饰符只会告诉您它是否为空,因此此选项在性能方面更好

票数 2
EN

Stack Overflow用户

发布于 2013-04-13 19:37:45

您可以将变量直接放在if语句中,只要您确定它将始终被设置(空或不是),就像这样设置{if !$array}。如果你正在寻找类似于三元运算符的东西,你可以使用名为default的变量修饰符,例如。$array|default:"empty"。在他们的forum上也有一些帮助in smarty docs。使用PHP的empty对我也很有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15987319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档