概要
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 のテーブル定義文字列を生成することができます。