2012-03-21 113 views
0

我使用smarty标签与PHP和我的问题是关于!isset功能。 首先,我介绍如何创建和分配我的两个数组。然后我使用SMarty IF语句来比较条件,如果条件满足,则显示或不显示HTMLSmarty标签PHP isset语句

第一个从数据库创建的数组被指定为Smarty变量。

{section name=cart loop=$cart} 
{/section} 

第二阵列也从数据库中抽取,但​​我分配通过Smarty的捕获此阵:

{capture name='donate' assign='donate'} 
{/capture} 

一旦阵列分配,这里的if语句:

{if $cart[cart].Program == TT && !isset($donate)} 
<td>Make a difference. Donate $10.00 to the ASPCA</td> 
{/if} 

即使未设置$ donate数组,也仍会显示HTML。感谢任何见解,指出我可能做错了什么

+0

你确定$ donate没有被设置?机会至少是被初始化的,这就是isset失败的原因,你可以尝试'empty($ donate)'。 – 2012-03-21 20:46:09

+0

正面。我在数组$ donate上执行了一个var_dump。 – 2012-03-21 20:50:08

+0

我想你可能会困惑,如果你做了'var_dump($ donate)'并且$ donate还没有被初始化,你会得到一个关于未定义变量的PHP通知。事实上,你没有收到这个错误,导致我相信它确实正在初始化,没有数据;尝试'空($ donate)'。 – 2012-03-21 20:52:41

回答

0
{capture name='donate' assign='donate'} 
{/capture} 
{$donate|var_dump} 

会给你

string(0) "" 

因为只有isset(null) === false,您可能希望你的表达改变

{if $cart[cart].Program == TT && $donate} 

!empty($donate),如果你喜欢。

0

$donate数组未设置或只是一个空数组,你试过用empty($donate)

+0

是的,我也试过空的($ donate)功能。 – 2012-03-21 20:50:55