2012-03-21 91 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