PHPバージョン
4.0.6+
$numbers = [1, 2, 3, 4, 5];

// 各要素を2倍にするコールバック関数を定義
function double($number) {
    return $number * 2;
}

// array_map()関数を使用して各要素にコールバック関数を適用し、新しい配列を生成
$doubled_numbers = array_map('double', $numbers);

print_r($doubled_numbers);
// 出力: Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 )
array_map(?callable $callback, array $array, array ...$arrays): array
$numbers = [1, 2, 3, 4, 5];

// 各要素を2倍にするコールバック関数を定義
function double($number) {
    return $number * 2;
}

// array_map()関数を使用して1つの配列にのみコールバック関数を適用
$doubledNumbers = array_map('double', $numbers);

print_r($doubledNumbers);
/* 出力:
Array
(
    [0] => 2
    [1] => 4
    [2] => 6
    [3] => 8
    [4] => 10
)
*/
$array1 = [1, 2, 3];
$array2 = [4, 5, 6];

// 2つの配列をコールバック関数に渡して値を合計する例
function add_arrays($a, $b) {
    return $a + $b;
}

$result = array_map('add_arrays', $array1, $array2);

print_r($result);
/* 出力:
Array
(
    [0] => 5
    [1] => 7
    [2] => 9
)
*/
$array1 = [1, 2, 3];
$array2 = [4, 5];

// 2つの配列をコールバック関数に渡して値を合計する例
function add_arrays($a, $b) {
    return $a + $b;
}

$result = array_map('add_arrays', $array1, $array2);

print_r($result);
/* 出力:
Array
(
    [0] => 5
    [1] => 7
    [2] => 3
)
*/
$array = [1, 2, 3];

// コールバック関数は参照で渡す必要がありますが、参照で渡していません
function addOne(&$value) {
    $value += 1;
}

array_map('addOne', $array);
$words = ['Hello', 'World', 'PHP', 'ARRAY'];

// 各文字列要素を小文字に変換するコールバック関数を定義
function to_lowercase($word) {
    return strtolower($word);
}

// array_map()関数を使用して各文字列要素にコールバック関数を適用し、新しい配列を生成
$lowercase_words = array_map('to_lowercase', $words);

print_r($lowercase_words);

// 出力: Array ( [0] => hello [1] => world [2] => php [3] => array )
$names = ['John', 'Jane', 'Bob'];
$scores = [85, 92, 78];

// 名前と点数を結合して連想配列を作成
$students = array_map(function($name, $score) {
    return ['name' => $name, 'score' => $score];
}, $names, $scores);

print_r($students);
/* 出力:
Array
(
    [0] => Array ( [name] => John [score] => 85 )
    [1] => Array ( [name] => Jane [score] => 92 )
    [2] => Array ( [name] => Bob [score] => 78 )
)
*/
class User {
    public $name;
    public function __construct($name) {
        $this->name = $name;
    }
    public function getGreeting() {
        return "Hello, my name is " . $this->name;
    }
}

$users = [new User('Alice'), new User('Bob'), new User('Charlie')];

// 各ユーザーの挨拶文を抽出
$greetings = array_map(function($user) {
    return $user->getGreeting();
}, $users);

print_r($greetings);
/* 出力:
Array
(
    [0] => Hello, my name is Alice
    [1] => Hello, my name is Bob
    [2] => Hello, my name is Charlie
)
*/