> PHP > smartyのin_arrayで配列の中の値の有無を調べる方法

smartyのin_arrayで配列の中の値の有無を調べる方法

  • 投稿日:2015/11/20 |最終更新:2015/11/23
  • PHP
  • smarty

 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

この記事が気に入ったらシェアしてください

関連記事

PHPで空白・改行コードを削除する方法

PHPで空白・改行コードを削除する方法

Smartyで配列の中身をデバッグする方法

カラーミーでカテゴリー商品一覧画面・グループ商品一覧画面で表示を変える方法

カラーミーでカテゴリー商品一覧画面・グループ商品一覧画面で表示を変える方法

カラーミーで共通のパーツを複数の画面で呼び出す方法

カラーミーで共通のパーツを複数の画面で呼び出す方法

smartyのarray_key_existsで配列の中のキーの有無を調べる方法

smartyのassignでテンプレート内変数を定義する方法

Comment Form

コメント投稿はこちらをクリックしてください
  • コメントを入力してください。
登録フォーム
Name
Mailaddress
URL
Message
Postkey
(スパム対策に、投稿キー を半角で入力してください。)