PHPで$arrayという配列に「foo」という文字列が存在するかを調べるときは、下記のようにします。
$array = array("foo", "bar", "foobar"); if(in_array("foo", $array)){ echo "配列に「foo」は存在します。"; };
smartyでも、配列の中の値の有無を調べるのにin_arrayを利用します。
たとえば、$arrayという配列の中に「foo」という文字列があるかないかを調べるには、
{if in_array('foo',$array)} true {else} false {/if}
このようにすればOKです。
または、
{if 'foo'|in_array:$array} true {else} false {/if}
と書くこともできます。
探す対象に変数を利用する場合は、
{if in_array($target,$array)} true {else} false {/if}
もしくは
{if $target|in_array:$arr} true {else} false {/if}
としましょう。
in_array
で調査できるのは、同一次元の配列内の値のみです。
たとえば、
$arrays = array( sample1 => array( id => "foo", name => "bar", text => "foobar" ), sample2 => array( id => "hoge", name => "piyo", text => "hogehoge" ), sample3 => array( id => "pochi", name => "tama", text => "mike" ) );
という二次元配列があったとして、
{in_array('foo',$arrays)} {$arrays|in_array:'foo'}
としても、結果はFALSEになってしまいます。
{in_array('foo',$arrays.sample1)} {$arrays.sample1|in_array:'foo'}
上記のようにすれば、結果はTRUEになります。
参考URL
- WEB開発備忘録|Smartyでin_array