배열 array_map

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

array_map — 주어진 배열의 요소에 콜백을 적용합니다.


설명

array_map(?callable $callback, array $array, array ...$arrays): array

array_map()은 콜백에 대한 인수로 사용되는 array(및 더 많은 배열이 제공되는 경우 arrays)의 해당 값에 callback을 적용한 결과를 포함하는 배열을 반환합니다.

callback 함수가 받아들이는 매개변수의 수는 array_map()에 전달된 배열의 수와 일치해야 합니다. 초과 입력 배열은 무시됩니다. 인수가 충분하지 않으면 ArgumentCountError가 발생합니다.


매개변수

callback
각 배열의 각 요소에 대해 실행할 callable입니다.

null은 여러 배열에서 zip 작업을 수행하기 위해 callback에 값으로 전달될 수 있습니다. array만 제공되면 array_map()은 입력 배열을 반환합니다.

array
callback 함수를 통해 실행할 배열입니다.
arrays
callback 함수를 통해 실행할 배열 인수의 보조 변수 목록입니다.

반환 값

콜백에 대한 인수로 사용되는 array(더 많은 배열이 제공되는 경우 arrays)의 해당 값에 callback 함수를 적용한 결과를 포함하는 배열을 반환합니다.

반환된 배열은 정확히 하나의 배열이 전달되는 경우에만 배열 인수의 키를 유지합니다. 둘 이상의 배열이 전달되면 반환된 배열에는 순차적 정수 키가 있습니다.


변경 로그

버전 설명
8.0.0 callback에서 매개변수가 참조로 전달될 것으로 예상하는 경우 이 함수는 이제 E_WARNING을 내보냅니다.

Examples

예제 #1 array_map() 예제

                  
<?php
function cube($n)
{
    return ($n * $n * $n);
}

$a = [1, 2, 3, 4, 5];
$b = array_map('cube', $a);
print_r($b);
?>
                  
                

이것은 $b가 다음을 갖게 합니다:

Array
(
    [0] => 1
    [1] => 8
    [2] => 27
    [3] => 64
    [4] => 125
)
                

예제 #2 람다 함수를 사용하는 array_map()

                  
<?php
$func = function(int $value): int {
    return $value * 2;
};

print_r(array_map($func, range(1, 5)));

// Or as of PHP 7.4.0:

print_r(array_map(fn($value): int => $value * 2, range(1, 5)));
?>
                  
                
Array
(
    [0] => 2
    [1] => 4
    [2] => 6
    [3] => 8
    [4] => 10
)
                

예제 #3 array_map() - 더 많은 배열 사용

                  
<?php
function show_Spanish(int $n, string $m): string
{
    return "The number {$n} is called {$m} in Spanish";
}

function map_Spanish(int $n, string $m): array
{
    return [$n => $m];
}

$a = [1, 2, 3, 4, 5];
$b = ['uno', 'dos', 'tres', 'cuatro', 'cinco'];

$c = array_map('show_Spanish', $a, $b);
print_r($c);

$d = array_map('map_Spanish', $a , $b);
print_r($d);
?>
                  
                

위의 예는 다음을 출력합니다.

// printout of $c
Array
(
    [0] => The number 1 is called uno in Spanish
    [1] => The number 2 is called dos in Spanish
    [2] => The number 3 is called tres in Spanish
    [3] => The number 4 is called cuatro in Spanish
    [4] => The number 5 is called cinco in Spanish
)

// printout of $d
Array
(
    [0] => Array
        (
            [1] => uno
        )

    [1] => Array
        (
            [2] => dos
        )

    [2] => Array
        (
            [3] => tres
        )

    [3] => Array
        (
            [4] => cuatro
        )

    [4] => Array
        (
            [5] => cinco
        )

)
                

일반적으로 두 개 이상의 배열을 사용하는 경우 해당 요소에 대해 콜백 함수가 병렬로 적용되므로 길이가 같아야 합니다. 배열의 길이가 같지 않으면 가장 긴 배열의 길이와 일치하도록 빈 요소로 더 짧은 배열이 확장됩니다.

이 함수의 흥미로운 용도는 배열의 배열을 구성하는 것입니다. 배열은 콜백 함수의 이름으로 null을 사용하여 쉽게 수행할 수 있습니다.

예제 #4 배열의 zip 작업 수행

                  
<?php
$a = [1, 2, 3, 4, 5];
$b = ['one', 'two', 'three', 'four', 'five'];
$c = ['uno', 'dos', 'tres', 'cuatro', 'cinco'];

$d = array_map(null, $a, $b, $c);
print_r($d);
?>
                  
                

위의 예는 다음을 출력합니다.

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => one
            [2] => uno
        )

    [1] => Array
        (
            [0] => 2
            [1] => two
            [2] => dos
        )

    [2] => Array
        (
            [0] => 3
            [1] => three
            [2] => tres
        )

    [3] => Array
        (
            [0] => 4
            [1] => four
            [2] => cuatro
        )

    [4] => Array
        (
            [0] => 5
            [1] => five
            [2] => cinco
        )

)
                

예제 #5 array만 있는 null callback

                  
<?php
$array = [1, 2, 3];
var_dump(array_map(null, $array));
?>
                  
                

위의 예는 다음을 출력합니다.

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
                

예제 #6 array_map() - 문자열 키 사용

                  
<?php
$arr = ['stringkey' => 'value'];
function cb1($a) {
    return [$a];
}
function cb2($a, $b) {
    return [$a, $b];
}
var_dump(array_map('cb1', $arr));
var_dump(array_map('cb2', $arr, $arr));
var_dump(array_map(null,  $arr));
var_dump(array_map(null, $arr, $arr));
?>
                  
                

위의 예는 다음을 출력합니다.

array(1) {
  ["stringkey"]=>
  array(1) {
    [0]=>
    string(5) "value"
  }
}
array(1) {
  [0]=>
  array(2) {
    [0]=>
    string(5) "value"
    [1]=>
    string(5) "value"
  }
}
array(1) {
  ["stringkey"]=>
  string(5) "value"
}
array(1) {
  [0]=>
  array(2) {
    [0]=>
    string(5) "value"
    [1]=>
    string(5) "value"
  }
}
                

예제 #7 array_map() - 연관 배열

array_map()은 배열 키를 입력으로 사용하는 것을 직접 지원하지 않지만 array_keys()를 사용하여 시뮬레이션할 수 있습니다.

                  
<?php
$arr = [
    'v1' => 'First release',
    'v2' => 'Second release',
    'v3' => 'Third release',
];

// Note: Before 7.4.0, use the longer syntax for anonymous functions instead.
$callback = fn(string $k, string $v): string => "$k was the $v";

$result = array_map($callback, array_keys($arr), array_values($arr));

var_dump($result);
?>
                  
                

위의 예는 다음을 출력합니다.

array(3) {
  [0]=>
  string(24) "v1 was the First release"
  [1]=>
  string(25) "v2 was the Second release"
  [2]=>
  string(24) "v3 was the Third release"
}
                

기타

  • array_filter() - 콜백 함수를 사용하여 배열의 요소를 필터링합니다.
  • array_reduce() - 콜백 함수를 사용하여 반복적으로 배열을 단일 값으로 줄입니다.
  • array_walk() - 배열의 모든 구성원에 사용자 제공 함수 적용