我为它做了谷歌,但无法得到正确的解决方案。谁能帮我检查关联数组是否为空。提前致谢。
3 回答
在 Smarty3 中,您可以使用PHP 的 empty() 函数:
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
。
似乎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
,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
修饰符的注意事项:
@count
将计算数组中元素的数量,而此修饰符只会告诉它是否为空,因此此选项在性能方面更好
您可以将变量直接放在 if 语句中,只要您确定它总是会像这样设置(为空或不为空){if !$array}
。如果您正在寻找类似于三元运算符的东西,您可以使用名为default的变量修饰符,例如。$array|default:"empty"
. smarty docs和他们的论坛上也有一些帮助。使用 PHP 的 empty 也对我有用。