Seo tools

Neo Inspiration

  • Search

    • About Me

      • inspi 改め
        jakk@webアーキテクト(自称)
        php,javascript,seoなど
        得意技は extract();



  • Categories

  • Ranking

  • Comments

  • Others


  • array_merge を使った初期値設定

    Wordpressの内部なんかで使われてる手法なんですが、(いまさら?)
    クラスとかのコンストラクタで引数のないものだけデフォルト値をセットするみたいな時に。

    普通にやったらまあこんなかんじ

    $org = array(’a’ => ‘good’ , ‘b’ => ‘bad’);

    func_r($org);

    function func_r($org=”){
    //キーがなければデフォルト値、あったらそのデータを格納
    $a = (array_key_exists(’a', $org))?$org['a']:’default_a’;
    $b = (array_key_exists(’b', $org))?$org['b']:’default_b’;
    $c = (array_key_exists(’c', $org))?$org['c']:’default_c’;
    }
    //$a=good,$b=bad,$c=default_c が格納される

    これを array_merge を使うと

    $array = array(’a’ => ‘good’ , ‘b’ => ‘bad’);

    func_s($array);

    function func_s($org=”){
    $def = array(’a’ => ‘default_a’, ‘b’ => ‘default_b’, ‘c’ => ‘default_c’);
    $res = array_merge($def, $org);
    extract($res, EXTR_SKIP);
    }
    //$a=good,$b=bad,$c=default_c が格納される

    行数は一緒ですが、array のデフォルト値の管理がわかりやすい!
    あとなんとなく冗長じゃなくて見やすい。

    動作としては、第一引数と第二引数をみくらべて
    同じキー文字列があれば、そのキーに関する第二引数の値が、 第一引数の値を上書きします。
    (文字通りマージする)

    ⇒ちなみにキーが数値の場合は追記になっちゃいますので注意
    ($org[1]と$def[1]をマージすると$res[1]と$res[2]に入っちゃいます)


    Leave a Reply

    2008/11/22 07:23:01