カテゴリ: PHP 更新日: 2026/09/12

PHPのarray_mapの使い方を完全解説!初心者でもわかる配列の要素を一括変換する方法

PHP の array_map() を使って配列の各要素を変更する方法
PHP の array_map() を使って配列の各要素を変更する方法

先生と生徒の会話形式で理解しよう

生徒

「PHPで配列の中の数字を全部2倍にしたり、文字を全部大文字に変えたりってできますか?」

先生

「そういうときにはarray_mapという関数を使うと便利です。一つひとつ手で書かなくても、まとめて変換できますよ。」

生徒

「まとめてってどういうことですか?一個ずつforeachで書くんじゃないんですか?」

先生

「もちろんforeachでもできますが、array_mapなら1行でスマートに書けます。使い方を一緒に見てみましょう!」

1. array_map関数とは?

1. array_map関数とは?
1. array_map関数とは?

array_map(アレイ・マップ)は、PHPで配列の中に入っているすべての要素に対して、同じ処理を一括で実行できる関数です。
繰り返し処理を自分で書かなくても、配列を「変換する」ことに特化して使えるのが特徴です。

たとえば、数字をすべて2倍にしたり、文字列をすべて大文字・小文字にそろえたりといった処理を、シンプルな書き方で実現できます。

基本的な構文は次の形です。


array_map(コールバック関数, 配列);

ここでいうコールバック関数とは、「配列の1つ1つの要素に対して実行される処理」のことです。配列の要素が1つずつ、この関数に渡されて、加工された結果が新しい配列として返ってきます。

初心者向け:とても簡単な例

次の例では、配列に入っている数字に「そのまま返す処理」を行っています。まずは動きをイメージするためのサンプルとして見てみてください。


$numbers = [1, 2, 3];

$result = array_map(function($value) {
    return $value;
}, $numbers);

print_r($result);

この場合、結果は元の配列と同じになりますが、array_mapが「配列の要素を1つずつ関数に渡している」ことが分かります。ここに計算や文字変換の処理を加えることで、配列をまとめて加工できるようになります。

2. 数字を2倍にする例

2. 数字を2倍にする例
2. 数字を2倍にする例

ここでは、array_mapを使って配列の中に入っている数字をすべて2倍にする基本的な例を見ていきましょう。計算処理と配列操作を同時に学べるので、初心者の方にもおすすめのサンプルです。

まずは、1〜5までの数字が入った配列を用意し、その値を順番に2倍に変換していきます。


$numbers = [1, 2, 3, 4, 5];

$double = array_map(function($n) {
    return $n * 2;
}, $numbers);

print_r($double);

実行結果は次のようになります。


Array
(
    [0] => 2
    [1] => 4
    [2] => 6
    [3] => 8
    [4] => 10
)

この例では、$numbersの中身が1つずつfunction($n)に渡され、$n * 2の計算結果が新しい配列として返されています。

function($n){ return $n * 2; } の部分は無名関数(名前を持たない関数)と呼ばれ、配列の各要素に対して同じ計算を行う役割を持っています。

このように、array_mapを使うと「配列の値をまとめて計算・変換する処理」を、読みやすくコンパクトに書くことができます。

3. 文字列を大文字・小文字に変換する

3. 文字列を大文字・小文字に変換する
3. 文字列を大文字・小文字に変換する

array_mapは、数値の計算だけでなく、文字列の変換処理にもよく使われます。実務では、入力された名前やメールアドレスの表記をそろえたい場面が多く、このような処理は頻繁に登場します。

PHPには、文字列をまとめて変換できる便利な関数が用意されています。代表的なのが、strtoupper(すべて大文字に変換)とstrtolower(すべて小文字に変換)です。

これらの関数は、そのままコールバック関数として指定できるため、無名関数を書かなくてもシンプルに処理できます。


$names = ["taro", "HANAKO", "JiRo"];

// すべて小文字に変換
$lower = array_map("strtolower", $names);

// すべて大文字に変換
$upper = array_map("strtoupper", $names);

print_r($lower);
print_r($upper);

出力結果は次の通りです。


Array
(
    [0] => taro
    [1] => hanako
    [2] => jiro
)
Array
(
    [0] => TARO
    [1] => HANAKO
    [2] => JIRO
)

この例では、配列の各要素が1つずつstrtolowerやstrtoupperに渡され、変換された結果が新しい配列として返されています。

文字の表記ゆれを防ぎたいときや、表示用データを整えたいときに、array_mapを使った文字列変換はとても役立ちます。

4. array_mapとforeachの違い

4. array_mapとforeachの違い
4. array_mapとforeachの違い

配列の中身を順番に処理する方法として、foreachとarray_mapはどちらもよく使われます。どちらが正解というわけではありませんが、目的によって向き・不向きがある点を理解しておくことが大切です。

foreachは処理の流れが分かりやすく、条件分岐や複雑な処理を書きたいときに向いています。一方、array_mapは「配列を別の形に変換する」ことに特化しており、短く読みやすいコードを書けるのが特徴です。

foreachで書く場合:


$numbers = [1, 2, 3];
$result = [];

foreach ($numbers as $n) {
    $result[] = $n * 2;
}

処理の手順が1行ずつ追えるため、初心者の方でも動きを理解しやすい書き方です。

array_mapで書く場合:


$result = array_map(function($n) {
    return $n * 2;
}, [1, 2, 3]);

こちらは「配列をどう変換したいか」が一目で分かり、コード全体がすっきりします。同じ処理をまとめて行いたいときには、array_mapの方が読みやすく、再利用もしやすくなります。

5. 配列の中身をHTMLで表示する場合

5. 配列の中身をHTMLで表示する場合
5. 配列の中身をHTMLで表示する場合

ブログ記事やWebページで一覧表示をしたいときなど、配列のデータをHTMLとして出力したい場面はよくあります。そのような場合にも、array_mapを使うと処理を分かりやすくまとめられます。

ここでは、配列に入っている文字列を<li>タグで囲み、HTMLのリストとして表示する例を見てみましょう。


$items = ["コーヒー", "お茶", "水"];

// 各要素を
  • タグで包む $list = array_map(function($item) { return "<li>" . $item . "</li>"; }, $items); //
      タグでまとめて出力 echo "<ul>" . implode("", $list) . "</ul>";
  • 出力結果は次のようになります。

    
    <ul><li>コーヒー</li><li>お茶</li><li>水</li></ul>
    

    このように、array_mapを使えば配列の各要素をHTML用に加工する処理をシンプルに書けます。表示用データを整形したいときに、とても便利な書き方です。

    6. 複数の配列を同時に処理する

    6. 複数の配列を同時に処理する
    6. 複数の配列を同時に処理する

    array_mapは、1つの配列だけでなく、複数の配列を同時にまとめて処理できる点も大きな特徴です。関連するデータを組み合わせたいときに、とても便利な書き方になります。

    ここでは、「苗字」と「名前」が別々の配列に入っている場合に、それらを合体させてフルネームを作る例を見てみましょう。

    
    $firstNames = ["田中", "佐藤", "鈴木"];
    $lastNames  = ["太郎", "花子", "一郎"];
    
    $fullNames = array_map(function($first, $last) {
        return $first . " " . $last;
    }, $firstNames, $lastNames);
    
    print_r($fullNames);
    

    実行結果は次のようになります。

    
    Array
    (
        [0] => 田中 太郎
        [1] => 佐藤 花子
        [2] => 鈴木 一郎
    )
    

    この例では、同じ番号同士の要素がセットでfunctionに渡され、1行ずつ結合されています。複数の配列をまとめて加工したいときに、array_mapはとても分かりやすく使える関数です。

    まとめ

    まとめ
    まとめ

    ここまでの内容を振り返ると、PHPの配列処理においてとても重要な役割を持っているのがarray_mapという関数であることがわかります。配列の一つひとつの要素に対して共通の処理をまとめて適用できるため、同じような書き方を繰り返す必要がなくなり、より見通しのよいコードを組み立てられるようになります。特に複雑な処理を行うときほど、コードがすっきりして読みやすくなる効果が大きく、開発が進むにつれて便利さを実感する場面が増えていきます。数字を二倍にしたり文字列を大文字や小文字に変換したり、あるいは複数の配列を同時に処理して新しい形に整えるといった用途まで幅広く応用できるため、配列操作に慣れていない段階でも積極的に使いながら理解を深めることができます。 また、array_mapはコールバック関数と組み合わせることで柔軟な処理を実現できるため、機能的な書き方に自然と慣れていくきっかけになります。コールバックとして無名関数を渡す例も多く、それによって処理内容をその場で簡潔に書けるようになります。同じ処理をforeachで書いた場合との違いを比べると、処理対象が増えるほどarray_mapの記述のわかりやすさが際立ち、後から読み返したときの理解しやすさも大きく変わってきます。配列の加工や変換を行う際には、まずarray_mapで書けないかを意識することが、きれいなコードを書く第一歩と言えるでしょう。 そして、実務では配列を画面表示用に整形することもよくありますが、HTMLタグを組み合わせた加工にもarray_mapは適しており、画面に出力するデータを安全かつ整然と扱うための手助けになります。特にリスト形式のデータを扱う場面では、配列を元に

  • タグを付与して整形する処理を簡潔に書けるため、テンプレートや画面出力ロジックが想像以上にシンプルになります。また、複数の配列を結びつけて一つの意味あるデータに変換する例では、配列が持つ並び順をうまく利用しながらスマートにデータを生成できる点も大きな特徴です。このように、array_mapは単なる便利な関数というだけでなく、配列処理における基本的な考え方や書き方を自然と身につけるための重要な入口になっているのです。

    応用として使えるサンプルコード

    最後に、学んだ内容を応用する例として、配列の中の商品名に価格を付け足して表示形式を整える処理をarray_mapで実装したコードを紹介します。

    
    <?php
    $items = ["コーヒー", "お茶", "水"];
    $prices = [300, 200, 150];
    
    $result = array_map(function($name, $price) {
        return "<div class='item'>" . $name . ":" . $price . "円</div>";
    }, $items, $prices);
    
    echo implode("", $result);
    ?>
        

    この例では、二つの配列を同時に処理しながらそれぞれの要素を結びつけ、画面にそのまま表示可能な形へ整えています。配列の要素数が増えても同じ形で処理が行われるため、商品リストや一覧ページなどで効率よくデータを加工できます。array_mapの利点を活かし、複雑な処理でもシンプルにまとめられることが理解しやすい例になっています。

    先生と生徒の振り返り会話

    生徒

    「array_mapってすごく便利なんですね。最初は単純に配列を変換するだけかと思っていたけれど、複数の配列をまとめて処理できたりHTMLの表示に使えたり、応用の幅が広いんですね。」

    先生

    「そうなんですよ。配列を扱うときに繰り返し処理が必要になる場面はとても多いので、array_mapを知っていることでコードが自然に整理されていきます。読みやすくて間違いの少ない書き方にもつながるので、今後の学習でも積極的に使ってみると良いですよ。」

    生徒

    「foreachよりもスッキリ書けるのがいいですね。無名関数と一緒に書くと少し難しそうに感じますが、慣れていけば読みやすさも上がりそうです。」

    先生

    「最初は少しとまどうかもしれませんが、実際に手を動かして何度か書いてみることで自然と身につきます。配列の加工や整形をするときは、まずarray_mapで書けるかを考えてみると、コードの質が大きく変わりますよ。」

  • この記事を読んだ人からの質問

    この記事を読んだ人からの質問
    この記事を読んだ人からの質問

    プログラミング初心者からのよくある疑問/質問を解決します

    PHPのarray_map関数とは何ですか?どんな場面で使うと便利ですか?

    PHPのarray_map関数は、配列のすべての要素に対して同じ処理を一括で適用できる関数です。例えば、数字をすべて2倍にしたり、文字列をすべて大文字に変えたりする場面で便利です。

    PHPのarray_mapとforeachの違いは何ですか?初心者におすすめなのはどっち?

    foreachはループ処理で柔軟性がありますが、array_mapは1行でスマートに処理できる関数です。コードをすっきり書きたい初心者にはarray_mapがおすすめです。

    PHPのarray_mapで文字列を全部大文字または小文字に変換できますか?

    はい、可能です。PHPのstrtoupper関数やstrtolower関数とarray_mapを組み合わせれば、文字列を一括で大文字または小文字に変換できます。
    コメント
    コメント投稿は、ログインしてください

    まだ口コミはありません。

    PHP の配列の記事一覧へ
    新着記事
    New1
    Copilot
    CopilotでPHPコード補完を始める方法!VS Codeで最初の補完を使う手順
    New2
    PHP
    PHPでお問い合わせメールを送信する方法!フォーム連携と本文テンプレート
    New3
    PHP
    PHPでPHPUnitの最初のテストを書く方法!関数テストの基本
    New4
    Claude
    ClaudeでPHPリファクタリングの失敗を減らす方法!実務で使うコードに近づけるための設計相談
    人気記事
    No.1
    Java&Spring記事人気No1
    Python
    PythonでSQLiteを使う方法を完全ガイド!初心者でもわかるデータベース基本操作
    No.2
    Java&Spring記事人気No2
    PHP
    PHP の MySQL 接続の基本(mysqli, PDO)を完全解説!初心者向けガイド
    No.3
    Java&Spring記事人気No3
    Python
    Pythonでヒートマップを作成する方法を完全解説!初心者でもわかるデータ分析入門
    No.4
    Java&Spring記事人気No4
    Python
    Pythonのエラーハンドリング設計を完全ガイド!初心者でもわかる適切な例外をキャッチする方法
    No.5
    Java&Spring記事人気No5
    Claude
    ClaudeでPythonデバッグを本番目線で確認する方法!本番環境のエラーを慌てず切り分ける考え方
    No.6
    Java&Spring記事人気No6
    Claude
    ClaudeでPHPリファクタリングの設計メモを作る方法!修正前に影響範囲を洗い出すプロンプト例
    No.7
    Java&Spring記事人気No7
    Python
    Pythonの数値型を完全ガイド!整数と浮動小数点数の違いを初心者向けに解説
    No.8
    Java&Spring記事人気No8
    Python
    Pythonで2次元リストを作成・操作する方法(リストのリスト)