Smarty における {if}
ステートメントは、PHP の
if と同等の柔軟性を持っています。
さらに、テンプレートエンジンのための機能をいくつか追加しています。
全ての {if}
は、対応する
{/if}
とペアである必要があります。{else}
と {elseif}
も使用できます。
|| や or、
&&、and、
is_array() など、PHP の条件演算子や関数はすべて利用可能です。
$security
が有効な場合は、 $security_settings
の配列 IF_FUNCS に含まれる PHP の関数のみが利用可能となります。
以下は認識される条件演算子の一覧です。 これらはスペースによって周りの要素から分離される必要があります。 [] 内に記載された項目は任意である事に注意して下さい。 "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 | 割り切れる | $a % $b == 0 | |
is [not] even | $a is not even | 偶数である [ない] (単項) | $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.15. {if} ステートメント
{if $name eq 'Fred'} Welcome Sir. {elseif $name eq 'Wilma'} Welcome Ma'am. {else} Welcome, whatever you are. {/if} {* 論理演算子 "or" の例 *} {if $name eq 'Fred' or $name eq 'Wilma'} ... {/if} {* 上と同じ *} {if $name == 'Fred' || $name == 'Wilma'} ... {/if} {* 括弧は使用可能 *} {if ( $amount < 0 or $amount > 1000 ) and $volume >= #minVolAmt#} ... {/if} {* PHP 関数を埋め込むことも可能 *} {if count($var) gt 0} ... {/if} {* 配列のチェック *} {if is_array($foo) } ..... {/if} {* null でないことのチェック *} {if isset($foo) } ..... {/if} {* 値が偶数か奇数か *} {if $var is even} ... {/if} {if $var is odd} ... {/if} {if $var is not odd} ... {/if} {* 値が 4 で割り切れるかどうか *} {if $var is div by 4} ... {/if} {* ふたつずつグループ化したときに、値が even であるかどうか 0=even, 1=even, 2=odd, 3=odd, 4=even, 5=even, etc. *} {if $var is even by 2} ... {/if} {* 0=even, 1=even, 2=even, 3=odd, 4=odd, 5=odd, etc. *} {if $var is even by 3} ... {/if}
Example 7.16. {if} のその他の例
{if isset($name) && $name == 'Blog'} {* 何かを行います *} {elseif $name == $foo} {* 何かを行います *} {/if} {if is_array($foo) && count($foo) > 0) {* foreach ループを実行します *} {/if}