雑多なブログ

音楽や語学、プログラム関連の話題について書いています

PHP: array_mapの使い方

array_mapは指定した配列に、コールバック関数を適用する関数だ。

例えば、連想の配列の値の前後に余分なスペースが混入している場合。要素の値を参照する箇所で個別にtrim関数でスペースを削除するのではなく、array_mapで一括でtrim関数を適用する事ができる。

$ary = [                                      
    'key1' => ' hogehogeho         ',         
    'key2' => '       fuge',                  
    'key3' => ' fuge ',                       
    'key4' => 'moge ',                        
];

var_dump(array_map('trim', $ary));

出力結果

array(4) {
  ["key1"]=>
  string(10) "hogehogeho"
  ["key2"]=>
  string(4) "fuge"
  ["key3"]=>
  string(4) "fuge"
  ["key4"]=>
  string(4) "moge"
}

さらに、複雑な処理を配列の要素に適用したい場合は、引数にコールバックを指定して、コールバックの中で処理を記述する事で複雑な処理を要素に適用する事ができる。
次の例は、trim関数適用した後に、さらに文字列をかっこで囲っているだけなので、それほど面白みはないがこういった事もできる。

例)

var_dump(array_map(function ($item) {        
    return '<'. trim($item). '>';            
}, $ary));

実行結果

array(4) {
  ["key1"]=>
  string(12) "<hogehogeho>"
  ["key2"]=>
  string(6) "<fuge>"
  ["key3"]=>
  string(6) "<fuge>"
  ["key4"]=>
  string(6) "<moge>"
}

array_mapは便利なので、色々使ってみると面白い。