PHP 내장 함수에서의 콜백
PHP에는 매개변수로 콜백을 받는
일련의 내장 함수가 있습니다.
그들의 일반적인 작동 원리는
array_map 함수를 예로 들어
배우겠습니다.
이 함수는 첫 번째 매개변수로
콜백을, 두 번째 매개변수로 배열을 받습니다.
함수는 콜백을 배열의 각 요소에 적용하고
변경된 배열을 반환합니다.
이전에 얻은 지식을 고려하여 이 함수 사용의 여러 가지 방법을 살펴보겠습니다.
방법 1
내장 함수
sqrt를 사용하여
배열의 각 요소에서
제곱근을 추출해 보겠습니다.
이를 위해 매개변수로 콜백에
해당 함수 이름이 포함된 문자열을 전달합니다:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map('sqrt', $arr);
var_dump($res);
?>
방법 2
우리가 만든 일반 함수를 사용하여 배열의 각 요소를 제곱해 보겠습니다. 이를 위해 매개변수로 콜백에 해당 함수 이름이 포함된 문자열을 전달합니다:
<?php
$arr = [1, 2, 3, 4, 5];
function func($num) {
return $num ** 2;
}
$res = array_map('func', $arr);
var_dump($res);
?>
방법 3
우리 함수를 변수에 할당된 익명 함수로 변경해 보겠습니다:
<?php
$arr = [1, 2, 3, 4, 5];
$func = function ($num) {
return $num ** 2;
};
$res = array_map($func, $arr);
var_dump($res);
?>
방법 4
익명 함수를 매개변수로 직접 전달해 보겠습니다:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map(function ($num) {
return $num ** 2;
}, $arr);
var_dump($res);
?>
방법 5
화살표 함수를 사용해 보겠습니다:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map(fn ($num) => $num ** 2, $arr);
var_dump($res);
?>
방법 6
이제 숫자를 거듭제곱할 지수가
콜백 외부 변수로 지정된다고 가정해 보겠습니다.
use를 통해 접근하여 이 변수를
사용해 보겠습니다:
<?php
$arr = [1, 2, 3, 4, 5];
$pow = 3;
$res = array_map(function ($num) use ($pow) {
return $num ** $pow;
}, $arr);
var_dump($res);
?>
방법 7
이전 코드를 화살표 함수로 다시 작성해 보겠습니다.
이제 $pow 변수에
자동으로 접근할 수 있습니다:
<?php
$arr = [1, 2, 3, 4, 5];
$pow = 3;
$res = array_map(fn ($num) => $num ** $pow, $arr);
var_dump($res);
?>
실습 문제
문자열로 이루어진 배열이 주어집니다. 배열의 각 요소 텍스트를 대문자로 변환하세요.
문자열로 이루어진 배열이 주어집니다. 배열의 각 요소 텍스트를 문자 순서를 반대로 뒤집으세요.