{if},{elseif},{else}

Smarty的{if}条件判断和PHP的if 非常相似,只是增加了一些特性。 每个{if}必须有一个配对的{/if}. 也可以使用{else}{elseif}. 全部的PHP条件表达式和函数都可以在if内使用,如||, or, &&, and, is_array(), 等等.

如果开启了安全机制,那么只有在$php_functions设置允许的PHP函数才能使用。 参见安全机制

下面是可用的运算符列表,使用中都会放到元素的中间并且用空格分隔。 注意列表中[方括号]的是可选的,而且还会列出对应PHP的表达式。

运算符 别名 语法示例 含义 对应PHP语法
== eq $a eq $b 等于 ==
!= ne, neq $a neq $b 不等于 !=
> gt $a gt $b 大于 >
< lt $a lt $b 小于 <
>= gte, ge $a ge $b 大于等于 >=
<= lte, le $a le $b 小于等于 <=
=== $a === 0 绝对等于 ===
! not not $a 非 (一元运算) !
% mod $a mod $b 取模 %
is [not] div by $a is not div by 4 取模为0 $a % $b == 0
is [not] even $a is not even [非] 取模为0 (一元运算) $a % 2 == 0
is [not] even by $a is not even by $b 水平分组 [非] 平均 ($a / $b) % 2 == 0
is [not] odd $a is not odd [非] 奇数 (一元运算) $a % 2 != 0
is [not] odd by $a is not odd by $b [非] 奇数分组 ($a / $b) % 2 != 0


Example 7.44. {if} 表达式

  1. {if $name eq 'Fred'}
  2. Welcome Sir.
  3. {elseif $name eq 'Wilma'}
  4. Welcome Ma'am.
  5. {else}
  6. Welcome, whatever you are.
  7. {/if}
  8.  
  9. {* an example with "or" logic *}
  10. {if $name eq 'Fred' or $name eq 'Wilma'}
  11. ...
  12. {/if}
  13.  
  14. {* same as above *}
  15. {if $name == 'Fred' || $name == 'Wilma'}
  16. ...
  17. {/if}
  18.  
  19.  
  20. {* parenthesis are allowed *}
  21. {if ( $amount < 0 or $amount > 1000 ) and $volume >= #minVolAmt#}
  22. ...
  23. {/if}
  24.  
  25.  
  26. {* you can also embed php function calls *}
  27. {if count($var) gt 0}
  28. ...
  29. {/if}
  30.  
  31. {* check for array. *}
  32. {if is_array($foo) }
  33. .....
  34. {/if}
  35.  
  36. {* check for not null. *}
  37. {if isset($foo) }
  38. .....
  39. {/if}
  40.  
  41.  
  42. {* test if values are even or odd *}
  43. {if $var is even}
  44. ...
  45. {/if}
  46. {if $var is odd}
  47. ...
  48. {/if}
  49. {if $var is not odd}
  50. ...
  51. {/if}
  52.  
  53.  
  54. {* test if var is divisible by 4 *}
  55. {if $var is div by 4}
  56. ...
  57. {/if}
  58.  
  59.  
  60. {*
  61. test if var is even, grouped by two. i.e.,
  62. 0=even, 1=even, 2=odd, 3=odd, 4=even, 5=even, etc.
  63. *}
  64. {if $var is even by 2}
  65. ...
  66. {/if}
  67.  
  68. {* 0=even, 1=even, 2=even, 3=odd, 4=odd, 5=odd, etc. *}
  69. {if $var is even by 3}
  70. ...
  71. {/if}
  72.  


Example 7.45. {if} 的更多例子

  1. {if isset($name) && $name == 'Blog'}
  2. {* do something *}
  3. {elseif $name == $foo}
  4. {* do something *}
  5. {/if}
  6.  
  7. {if is_array($foo) && count($foo) > 0}
  8. {* do a foreach loop *}
  9. {/if}
  10.  

原文: https://www.smarty.net/docs/zh_CN/language.function.if.tpl