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
この記事が気に入ったらシェアしてください