【问题标题】:Smarty Tags PHP isset statementSmarty 标签 PHP isset 语句
【发布时间】:2012-03-21 20:41:59
【问题描述】:

我在 php 中使用 smarty 标签,我的问题/问题是关于 !isset 功能的。 首先,这是我创建和分配两个数组的方式。然后我用一个smarty if语句来比较条件,如果条件满足,要么显示html,要么不显示html

从数据库中创建的第一个数组被分配为 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。感谢任何见解指出我可能做错了什么

【问题讨论】:

  • 您确定没有设置 $donate 吗?有可能它至少正在初始化,这就是 isset 失败的原因,您可以尝试empty($donate)
  • 积极。我对数组 $donate 执行了 var_dump。
  • 我想你可能对 isset 感到困惑,如果你做了var_dump($donate) 并且 $donate 还没有被初始化,你会得到一个关于未定义变量的 PHP 通知。您没有收到此错误的事实使我相信它确实正在初始化,只是没有数据;试试empty($donate)
  • 你在{capture}...{/capture} 块中实际在做什么,你能发布完整的代码吗?
  • 你检查过第一个 IF 评估 "$cart[cart].Program == TT" 吗?

标签: php smarty isset


【解决方案1】:
{capture name='donate' assign='donate'}
{/capture}
{$donate|var_dump}

会给你

string(0) "" 

由于只有isset(null) === false,您可能需要将表达式更改为

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

!empty($donate),如果您愿意的话。

【讨论】:

    【解决方案2】:

    $donate 数组是未设置还是只是一个空数组,您是否尝试过使用empty($donate)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-14
      • 1970-01-01
      • 2017-08-16
      • 2012-05-31
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多