我为谷歌做了,但无法获得正确的解决方案。任何人都可以帮我检查关联数组是否为空。在此先感谢。
答案 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 docs和forum。使用PHP的空也对我有用。