使える関数array_map()

Date 2007-03-20 13:06:04 | Category: PHP

in englishin japanese
PHPコードを書くとき、処理速度の関係から、極力ビルトイン関数を使うようにしているのだが、最近のお気に入りはarray_map()。
これがいろいろな局面で使える。

例えば、フォームにカンマ区切りで、複数の値を入力してもらう時。
1,2,3,4 とか。
これをint型の配列で取得したい場合、explodeしたものをforeach()で回しがちだけど、実はこの1行で済む。

$myarray = array_map( 'intval' , explode( ',' , $post_data ) ) ;


あと、役に立つのが、重複無しで配列の和を取る場合。
配列同士を+演算子で「足す」と、同じindexを持った要素の片方が消えてしまう。
かといって、array_merge()で「足す」と、同じ内容の要素が重複してしまう。

通常、array_merge()などで重複したデータを消すためには、array_unique() を利用するのだが、この関数はあくまで、文字列での比較しかしない。だから、配列要素が配列やオブジェクトの場合は、そのままだと使えない。

このケースでも、array_map() の出番となる。

$merged_array = array_map( 'unserialize' , array_unique( array_map( 'serialize' , array_merge( $array1 , $array2 ) ) ) ) ;





You can read more news at PEAK XOOPS.
http://xoops.peak.ne.jp

The URL for this story is:
http://xoops.peak.ne.jp/md/news/index.php?page=article&storyid=412