3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

(PHP)Smartyで配列の中に要素があるかや配列かどうか、変数が存在するか調べる

Smartyのテンプレート内で、配列の中に指定した値があるかどうかや、そもそも配列かどうか、そして該当の変数が存在するかどうかを判定する方法です。

テンプレート内に下記のようにすることで判定できます。

{* 変数が存在するかどうか *}

{if isset($value)}

変数が存在する

{else}

変数が存在しない

{/if}

 

{* 配列かどうか *}

{if is_array($value)}

配列だ

{else}

配列じゃない

{/if}

 

{* 配列内に、100が存在するかどうか *}

{if 100|in_array:$value}

存在する

{else}

存在しない

{/if}

 

 

{* 配列内に、100が存在するかどうか

 の別バージョン *}

{if in_array(100 , $value)}

存在する

{else}

存在しない

{/if}

テンプレートなので、本来は条件分岐などは書かない方がきれいなのですが、まぁどうしても必要というが結構あるので、そのような時は重宝します。

ところで、{ や | , } ですが、下記のようにスペース等挟むとエラーになるので注意が必要です。これで、結構悩みましたorz

{if isset($value) }

とか

{if 100 | in_array:$value}

等はエラーになる。

参考:

Smartyで 配列の中に要素があるかを調べる (in_array )

Smartyで配列かどうかを判別するには?

Smartyテンプレート内でissetやemptyが使えない場合 issetを使う場合、注意が必要な場合もあるようです。