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