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

// 각 요소를 두 배로 만들기 위한 콜백 함수 정의
function double($number) {
    return $number * 2;
}

// array_map() 함수를 사용하여 각 요소에 콜백 함수를 적용하여 새로운 배열 생성
$doubledNumbers = array_map('double', $numbers);

print_r($doubledNumbers);
// 출력: Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 )
array_map(callable $callback , array $array1 [, array $... ]): array
$numbers = [1, 2, 3, 4, 5];

// 각 요소를 두 배로 만들기 위한 콜백 함수 정의
function double($number) {
    return $number * 2;
}

// array_map() 함수를 사용하여 하나의 배열에만 콜백 함수를 적용
$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];

// 두 개의 배열을 콜백 함수에 전달하여 값을 합치는 예제
function addArrays($a, $b) {
    return $a + $b;
}

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

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

// 두 개의 배열을 콜백 함수에 전달하여 값을 합치는 예제
function addArrays($a, $b) {
    return $a + $b;
}

$result = array_map('addArrays', $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 toLowerCase($word) {
    return strtolower($word);
}

// array_map() 함수를 사용하여 각 문자열 요소에 콜백 함수를 적용하여 새로운 배열 생성
$lowercaseWords = array_map('toLowerCase', $words);

print_r($lowercaseWords);

// 출력: 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 )