MW211 EXIT

devlog
PHP/多次元配列の値を収集
2011年11月13日
多次元配列の値のみをまとめて一次元配列として取り出す方法はないものか?
最終的には「implode()」とかで、CSV形式で一列にしたりしたい。
ってことで、そんな関数がないかと探しているが見当たらないので
関数を作ってしまうことにした。

ふたパターンつくってしまった(結果は同じ)。
┌──────────────────────────────────────┐
│function getValueInArray($array) {                                          │
│  static $return = array();                                                 │
│  foreach($array as $value) {                                               │
│    if (is_array($value)) {                                                 │
│      getValueInArray($value);                                              │
│    } else {                                                                │
│      $return[] = $value;                                                   │
│    }                                                                       │
│  }                                                                         │
│  return $return;                                                           │
│}                                                                           │
├──────────────────────────────────────┤
│function getValueInArray($array) {                                          │
│  $return = array();                                                        │
│  foreach($array as $value) {                                               │
│    if (is_array($value)) {                                                 │
│      $return = array_merge($return, getValueInArray($value));              │
│    } else {                                                                │
│      $return[] = $value;                                                   │
│    }                                                                       │
│  }                                                                         │
│  return $return;                                                           │
│}                                                                           │
└──────────────────────────────────────┘

例えば以下のような多次元配列を投入すると、
┌──────────────────────────────────────┐
│$array = array('a',                                                         │
│               'B' => array('ba', 'bb'),                                    │
│               'C' => array('CA' => array('caa')));                         │
├──────────────────────────────────────┤
│├a        ←これと                                                         │
│├B                                                                         │
││├ba     ←これと                                                         │
││└bb     ←これと                                                         │
│└C                                                                         │
│  └CA                                                                      │
│    └caa  ←これを採取する                                                 │
└──────────────────────────────────────┘
以下のような結果となる(print_r()で出力)
┌──────────────────────────────────────┐
│Array ( [0] => a [1] => ba [2] => bb [3] => caa )                           │
└──────────────────────────────────────┘
分類:PHP配列