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

时间:2013-04-13 11:32:50

标签: php smarty

我为谷歌做了,但无法获得正确的解决方案。任何人都可以帮我检查关联数组是否为空。在此先感谢。

3 个答案:

答案 0 :(得分:4)

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

somefile.php

<?PHP
$smarty->assign('array',array());
$smarty->display('template.tpl');

template.tpl

{if empty($array)}
  Array is empty
{else}
  Array is not not empty
{/if}

输出Array is empty

答案 1 :(得分:2)

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

somefile.php

<?PHP
$smarty->assign('array',array());
$smarty->display('template.tpl');

template.tpl

{if $array}
  Array is set
{else}
  Array is not set
{/if}

输出Array is set

在php中...

<?PHP
$array = array();
if($array){
  echo 'Array is set';
}else{
  echo 'Array is not set';
}

输出Array is not set

为了解决这个问题,我做了一点解决方法:使用以下代码为smarty创建了一个修饰符: modifier.is_empty.php

<?PHP
function smarty_modifier_is_empty($input)
{
    return empty($input);
}
?>

将该代码段保存在名为SMARTY_DIR的{​​{1}}目录内的plugins中,您可以像这样使用它:

modifier.is_empty.php(考虑使用相同的template.tpl

somefile.php

这将输出{if !($array|is_empty)} Array is not empty {else} Array is empty {/if}

使用Array is empty修饰符再次使用此修改器的说明:
@count将计算数组中元素的数量,而此修饰符仅指示它是否为空,因此此选项在性能方面更好

答案 2 :(得分:0)

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