무명함수(익명함수/클로저)란?
단 한번만 실행하는 일회성 함수
주로 콜백을 파라미터로 입력받는 함수의 파라미터로 사용됨 (JS의 setTimeout의 콜백함수를 넣듯이)
// array_filter란 배열에서 특정조건에 맞는 항목만 뽑아내는 PHP내장함수이다
// array_filter(배열, 콜백 함수);
$datas = [1,2,"3","4","오","률",7];
$checker = 2;
// 해당 배열속에서 checker = 2가 일치하는 값만 출력함
$filter_data = array_filter($datas,
function($item) use ($checker) {
return $item == $checker;
}
);
var_dump($filter_data); // array(1) { [1]=> int(2) }
무명함수 사용시 문제점
// 世界1
$word = 'Hello!!';
$func = function() {
// 世界2
echo $word;
};
$func(); // Hello가 출력될것을 예상했지만 출력되지 않음
그 이유는 클로저(무명함수) 내부에서 외부의 변수를 참조하지 못하였기때문이다
그래서 아래의 use()를 사용한다
// 世界1
$word = 'Hello!!';
$func = function() use($word){
// 世界2
echo $word;
};
$func(); // Hello가 출력
use(변수)를 사용해서 클로저 내부에 변수를 전달한다
참조
https://qiita.com/westhouse_k/items/fe527b59146739cf7af3
https://wikidocs.net/116966
Nov 26, 2022
Views 117