こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在4社経験している、11年目エンジニアです。
この記事では、 PHPで配列の各要素に関数を適用させることができるarray_map関数について
- array_map関数とは
- array_map関数を使ったサンプルプログラム
と、丁寧に解説していきます。
前提条件:実行環境について
実行環境は以下の通りです。
OS | Windows10 |
---|---|
PHPのバージョン | 8.0.3 |
XAMPPのバージョン | 8.0.3 |
PHPを動かすためにXAMPPを使っています。
XAMPPのインストールは、下の記事をご参考ください。
array_map関数とは
array_map関数とは、引数に指定された配列の各要素に関数を適用させてできた配列を返す関数です。
適用させたい配列は複数指定することができます。
使い方サンプルは、以下になります。
1 2 3 4 5 6 |
function calc($value) { return $value * 2; } $sample = [2, 9]; $result = array_map('calc', $sample); |
上記の例だと、変数resultには
1 2 3 4 5 |
Array ( [0] => 4 [1] => 18 ) |
という配列が返されます。
意味は下記になります。
第一引数の関数には
- 組み込み関数
- ユーザー定義関数
- 無名関数
を指定することができます。
複数の配列を指定する場合に注意点があります。
それは、第一引数の関数の引数の数です。
理由は、指定する配列の数と関数の引数の数は一致している必要があるからです。
どういうことかと言いますと使い方サンプルは、以下になります。
1 2 3 4 5 6 7 |
function calc($value1, $value2) { return $value1 * $value2; } $sample1 = [2, 9]; $sample2 = [7, 5]; $result = array_map('calc', $sample1, $sample2); |
というように第一引数の関数の引数と第二引数以降の配列の数を一致させます。
上記の例だと、変数resultには
1 2 3 4 5 |
Array ( [0] => 14 [1] => 45 ) |
という配列が返されます。
array_map関数は複数の配列を指定した場合、インデックスが同じ要素を抽出して処理をしていきます。
もし指定した配列の長さ等しくない場合、要素数の少ない配列は空の要素とみなされ処理されていきます。
何かしらの例外が出る、というわけではありません。
では、次の章で実際に使ってみます。
array_map関数を解説するプログラムの概要
array_map関数を解説するプログラムでは、
- 配列を1つ指定した場合
- 配列を2つ指定した場合
の2パターンでarray_map関数を使い、結果を表示させます。
phpプログラムは
C:\xampp\htdocs
配下に、【arraymapsample.php】というファイル名で格納しています。
PHPサンプルプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
<?php /** * 渡された文字列を連結する */ function getName($name, $age){ return $name.'さんは'.$age.'歳'; } print('■array_map関数サンプル<br />'); print('・配列を1つ指定した場合<br />'); $fruit_array = ['リンゴ', '柿']; print('指定する配列'); print_r('<pre>'); print_r($fruit_array); print_r('</pre>'); $fruit_result = array_map('mb_strlen', $fruit_array); print('各要素の文字数をカウント'); print_r('<pre>'); print_r($fruit_result); print_r('</pre>'); print('・配列を2つ指定した場合<br />'); $name_array = ['田中', '鈴木', '佐藤']; $age_array = [10, 28]; print('指定する配列'); print_r('<pre>'); print_r($name_array); print_r($age_array); print_r('</pre>'); $name_result = array_map('getName', $name_array, $age_array); print('各要素を連結した結果'); print_r('<pre>'); print_r($name_result); print_r('</pre>'); ?> |
mb_strlen関数とは、文字数を取得することができる関数です。
詳しくはこちらの記事をご参考ください。
実行結果
XAMPPを起動して、【http://localhost/arraymapsample.php】のURLにアクセスします。
XAMPPでPHPの動かし方については、こちらの記事をご参考ください。
指定した配列の各要素に対して関数が適用されていることを確認できました。
まとめ:array_map関数を使ってみよう!
以上がarray_map関数についての解説でした。
あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ
コメント