2

我为它做了谷歌,但无法得到正确的解决方案。谁能帮我检查关联数组是否为空。提前致谢。

4

3 回答 3

7

在 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

于 2014-03-18T09:53:59.673 回答
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,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将计算数组中元素的数量,而此修饰符只会告诉它是否为空,因此此选项在性能方面更好

于 2014-01-12T20:31:24.170 回答
0

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

于 2013-04-13T11:37:44.967 回答