PHPで文字列を区切り文字で配列に変換する際に使うのがexplode関数。
まれに受け取った入力文字列の中に不要なスペースが入っている場合がある。
例えば以下のような例だ。
hoge,fuga, piyo
この文字列に対しexplode関数を実行すると、出来上がった配列は以下のようになり、piyoの前に空白文字が入ってしまう。
<?php
$str = 'hoge,fuga, piyo';
$arr = explode(',', $str);
var_dump($arr);
// 以下出力結果
array(3) {
[0]=>
string(4) "hoge"
[1]=>
string(4) "fuga"
[2]=>
string(5) " piyo"
}
出来上がった配列に対し、空白を除去するtrim関数をループで回して実行する方法もあるのだが面倒なので、今回はarray_map関数を使ってexplodeとtrimを同時におこなう方法を紹介する。
array_map関数
array_map関数は、第二引数以降で与える配列の各要素に対し、第一引数に指定したコールバック関数を適用するものだ。
今回の例をもとに具体的な使い方を見ていこう。
<?php
$str = 'hoge,fuga, piyo';
$arr = array_map('trim', explode(',', $str));
var_dump($arr);
array_map関数の第二引数にexplode関数で生成した配列を指定している。
この配列の各要素、つまり「hoge」「fuga」「 piyo」に対し、第一引数で指定したtrim関数を実行してくれるというわけだ。
結果を見ると、piyoの前にあった半角スペースがなくなっている事が分かる。
array(3) {
[0]=>
string(4) "hoge"
[1]=>
string(4) "fuga"
[2]=>
string(4) "piyo"
}