[PHP] array_mapのサンプルを作ってみる
Nプログラマ(@Nprog128)です。
今回は、array_mapの使って色々とサンプルを作ってみます。
基本
1array_map ( callable $callback , array $array1 [, array $… ] ) : array
最近知ったのですが、第2引数以降は可変リストなんですね。
配列は1コしか渡せないと思いこんでいました。
マニュアルをよく確認しないと行けないッスね。
基本コード
基本 コードを開く
第1引数には、配列に対する処理を行う関数を渡します。
第2引数には、第1引数の関数に渡す配列を渡します。
配列の個数は任意の数を渡せますが、任意の個数と、第1引数の関数が取る引数の個数が一致する必要があります。
サンプル1: 自分で定義した関数を渡す
自分でcountUp関数を定義して、それをarray_map関数に渡すというサンプルを作ってみました。
サンプル1 コードを開く
結果 を開く
$dataの要素にそれぞれ+1された結果の配列が$resultに返ってきました。
サンプル2: PHPのビルトイン関数を渡す
strval関数の名前を渡して、配列の要素を文字列にするサンプルを作ってみました。
サンプル2 コードを開く
結果 を開く
先程はint型の配列だったのが、string型の配列になっていることが確認できました。
ネットで調べてみると組み込み関数や標準関数とかもありますが、マニュアルに合わせて内部関数(ビルトイン関数)とします。
内部(ビルトイン)関数 より引用
サンプル3: 配列を2個渡す
実は最近コレを知った。。。
次は第2引数の可変リストに配列を2つ渡すサンプルを作ってみます。
関数の処理は、$dataに入っている要素を$exp_arrayの要素でそれぞれべき乗するという内容になります。
1(ちょっと分かりづらいので、先に下の表(テーブル)を見ていただければどのような動作か分かると思います)
配列要素に対するべき乗の処理を表にすると、こんな感じになります。
$data | $exp_array | powの結果 |
---|---|---|
1 | 2 | 1 |
2 | 4 | 16 |
3 | 6 | 729 |
サンプル3 コードを開く
結果 を開く
$dataの配列の要素が、べき乗された結果が確認できました。
コードの説明
pow関数について
pow関数は引数を2個取り、べき乗を返すビルトイン関数です。単体で使うとこんな感じになります。
1pow(2, 4); // 2の4乗なので16が返ってくる
callableの引数について
マニュアルにある callableに渡す関数の引数は、pow関数が取る引数の個数(2個)と、可変リストに渡す配列の個数($data, $exp_arrayの2個)が一致しているので、使用する条件もクリアしています。おわりに
今回はarray_mapを使って色々とサンプルを作ってみました。
array_mapは処理がちょっと遅いらしいので、たくさん呼び出す時はそのへんを考慮する必要があります。
その時は、forとかforeachを使った方がいいかもしれません。
array_mapは一時変数を使わないので、つい使いたくなる。。。
ケース・バイ・ケースということで!
それでは、このへんで。
バイナリー!