前言
Smarty 模板中的 {if} 條件判斷支援豐富的邏輯運算子,本文整理完整對照表,包含比較、邏輯、數學、奇偶判斷等運算子用法與注意事項。
比較運算子
| 運算子 | 別名 | 意義 | 範例 |
eq | == | 等於 | {if $a eq $b} |
neq/ne | != | 不等於 | {if $a neq $b} |
gt | > | 大於 | {if $a gt $b} |
lt | < | 小於 | {if $a lt $b} |
gte/ge | >= | 大於等於 | {if $a gte $b} |
lte/le | <= | 小於等於 | {if $a lte $b} |
邏輯運算子
| 運算子 | 別名 | 意義 |
&& | and | 邏輯 AND |
|| | or | 邏輯 OR |
not | — | 邏輯 NOT |
數學與奇偶判斷
| 運算子 | 意義 | 範例 |
mod | 取模(餘數) | {if $a mod 3 eq 0} |
div by | 可被整除 | {if $a is div by 3} |
is [not] even | 是否為偶數 | {if $a is even} |
is [not] odd | 是否為奇數 | {if $a is not odd} |
is [not] even by | 除以某數後是否為偶數 | {if $a is even by $b} 即 ($a/$b)%2==0 |
is [not] odd by | 除以某數後是否為奇數 | {if $a is not odd by $b} 即 ($a/$b)%2!=0 |
重要語法規則
- 運算子與運算元間必須有空格:
{if $a eq $b} ✓ / {if $a eq$b} ✗
{if} 必須與 {/if} 成對出現
- 支援
{else}、{elseif} 子句
變數存在性判斷
| 寫法 | 判斷邏輯 |
{if $var} | 變數存在且非空/非 0/非 false |
{if $var !== ''} | 變數不等於空字串(嚴格比較) |
實用範例
{* 多條件判斷 *}
{if $user.age gte 18 && $user.status eq 'active'}
成年啟用用戶
{elseif $user.age lt 18}
未成年
{else}
其他
{/if}
{* 奇偶行樣式 *}
{foreach $list as $item}
<div class="{if $item@iteration is odd}odd{else}even{/if}">...</div>
{/foreach}