PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのarray_map()関数とは?構文・パラメータ・実用例を徹底解説

PHPのarray_map()関数は、配列の各要素に対してユーザー定義のコールバック関数を適用し、その結果をもとに新しい配列を生成する便利な関数です。foreachなどのループ処理を書かずに配列全体を一括変換できるため、コードが簡潔になり可読性も大きく向上します。

構文

array_map(callback, arr1, arr2, arr3, ...)

パラメータ

  • callback − 各要素に適用されるコールバック関数。nullを指定すると、複数の配列を結合した新しい配列を作成できます。

  • arr1 − 変換対象となる配列。

  • arr2以降 − 追加で渡す配列(省略可能)。複数の配列を渡すと、各配列の同じ位置の要素がまとめてコールバックに渡されます。

戻り値

array_map()関数は、第1引数の配列の各値にユーザー定義関数を適用した結果を含む新しい配列を返します。元の配列は変更されません。

使用例1:配列の各要素を2乗する

<?php
function square($n) {
    return($n * $n);
}
$arr = array(1, 2, 3);
$res = array_map("square", $arr);
print_r($res);
?>

出力結果

Array
(
[0] => 1
[1] => 4
[2] => 9
)

この例では、square()という自作関数が配列内の各数値に適用され、それぞれの値が2乗された新しい配列が返されています。

使用例2:複数の配列を組み合わせる

次の例では、コールバックにnullを指定することで、複数の配列の同じ位置にある要素を1つのサブ配列としてまとめた「配列の配列」を作成しています。

<?php
$arr1 = array(1, 2, 3);
$arr2 = array("steve", "david", "nadal");
$arr3 = array("cricket", "football", "tennis");
$res = array_map(null, $arr1, $arr2, $arr3);
print_r($res);
?>

出力結果

Array
(
[0] => Array
(
[0] => 1
[1] => steve
[2] => cricket
)

[1] => Array
(
[0] => 2
[1] => david
[2] => football
)

[2] => Array
(
[0] => 3
[1] => nadal
[2] => tennis
)
)

補足:無名関数やアロー関数でより簡潔に書く方法

PHP 5.3以降では無名関数(クロージャ)を、PHP 7.4以降ではアロー関数をそのまま渡せるため、別途関数を定義せずに済みます。

<?php
// アロー関数(PHP 7.4以降)
$res = array_map(fn($n) => $n * $n, [1, 2, 3]);
print_r($res);
?>

このようにarray_map()は、単純な変換処理から複数配列の結合まで柔軟に対応できる、PHPの配列操作において非常に有用な関数です。

  1. PHPのarray_map()関数とは?構文・パラメータ・実用例を徹底解説

    PHPのarray_map()関数は、配列の各要素に対してユーザー定義のコールバック関数を適用し、その結果をもとに新しい配列を生成する便利な関数です。foreachなどのループ処理を書かずに配列全体を一括変換できるため、コードが簡潔になり可読性も大きく向上します。構文array_map(callback, arr1, arr2, arr3, ...)パラメータcallback − 各要素に適用されるコールバック関数。nullを指定すると、複数の配列を結合した新しい配列を作成できます。arr1 − 変換対象となる配列。arr2以降 − 追加で渡す配列(省略可能)。複数の配列を渡すと、各配列の同じ

  2. PHPのarray()関数とは?配列の作成方法をわかりやすく解説

    PHPのarray()関数は、配列を作成するための関数です。PHPにおける配列には、主に以下の3種類が存在します。インデックス配列 − 数値インデックス(0から始まる番号)で要素を管理する配列連想配列 − 文字列などの名前付きキーで要素を管理する配列多次元配列 − 配列の中に1つ以上の配列を含む、入れ子構造の配列構文// 数値インデックスを持つ配列(インデックス配列) array(value1, value2, ...); // 名前付きキーを持つ配列(連想配列) array(key1 => value1, key2 => value2, ...)パラメータvalue − 配列に