배열 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() - 배열의 모든 구성원에 사용자 제공 함수 적용