5
2

More than 1 year has passed since last update.

PHPのarray_map関数の使い方

Posted at

概要

array_map 関数は、配列のすべての要素に一定の処理を行い、新しい配列を生成するために使用されます。次のような形式で使用できます。

array_map(callable $callback, array $array1 [, array $array2, ...]);
  • callback: 配列のすべての要素に適用される関数またはコールバック。
  • array1, array2, ...: 処理対象の配列。

この関数は、指定された配列のすべての要素に、$callback 関数またはコールバックを適用して、新しい配列を返します。配列の要素数が異なる場合、最も小さい配列の要素数に合わせて、他の配列の要素は無視されます。

使用例

通常の関数

次の例では、数値配列内のすべての数値を2倍する関数を使用して、array_map 関数を使用する方法を示します。

<?php

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

$doubled = array_map(function ($number) {
    return $number * 2;
}, $numbers);

print_r($doubled);

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

このように、array_map 関数を使用することで、配列内のすべての要素に対して同じ操作を行うことができます。

アロー関数

アロー関数を使用して、array_map 関数を使用することもできます。次の例を見てください。

<?php

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

$doubled = array_map(fn($number) => $number * 2, $numbers);

print_r($doubled);

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

もう少し複雑な使用例

次に、array_map 関数を用いて、フィールド名の配列から、SQLのテーブル定義に変換する処理を書いてみます。
次のように、array_map 関数を使用して、フィールド名の配列から SQL のテーブル定義に変換する処理を書くことができます。

<?php

$fields = [
    'id' => 'INT',
    'name' => 'VARCHAR(255)',
    'email' => 'VARCHAR(255)',
    'created_at' => 'TIMESTAMP',
];

$sql = "CREATE TABLE table_name (\n" . implode(",\n", array_map(function ($field, $type) {
    return "  `$field` $type";
}, array_keys($fields), $fields)) . "\n);";

echo $sql;

/* Output:
CREATE TABLE table_name (
  `id` INT,
  `name` VARCHAR(255),
  `email` VARCHAR(255),
  `created_at` TIMESTAMP
);
*/

このように、array_map 関数を使用することで、フィールド名とデータ型を組み合わせた新しい配列を生成することができます。次に、生成された配列を implode 関数を使用して連結し、SQL のテーブル定義文字列を生成することができます。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2