SRC遊んだり書いたり。時々プログラミング

SRCの感想とか技術解説とか、そんな感じのアレ!

(連想)配列をフラットにする

function array_flatten($arr, $key = null)
{
    $tmp = [];
    if (is_array($arr))
        foreach ($arr as $key => $value)
            $tmp = array_merge($tmp, $this->__array_flatten($value, $key));
    else {
        if (is_numeric($key))
            $tmp[] = $arr;
        else
            $tmp[$key] = $arr;
    }
    return $tmp;
}

これで

array(
  array(
    '0' => array(
      'foo' => 'bar'
    ),
    '1' => array(
      'faa' => 'bee'
    )
  )
);

という構造の(連想)配列が

array(
  'foo' => 'bar',
  'faa' => 'bee'
);

とフラット化する。ただの配列の値については0から始まる連番がキーに割り当てられる。

連想配列で同じキーの値があった時に、後方の値が優先される(前方の値が後方の値によって上書きされる)ことに注意。