>백엔드 개발 >PHP 튜토리얼 >PHP의 익명 함수 및 클로저

PHP의 익명 함수 및 클로저

陈政宽~
陈政宽~원래의
2017-06-28 11:32:121004검색

1가지 기능. 가장 일반적으로 사용되는 것은 콜백 함수의 매개변수 값입니다. 익명 함수 정의:

$closureFunc = function(){

    ....

 };
예: 익명 함수를

변수

에 할당하고

 $closureFunc = function($str){

   echo $str;

  };  $closureFunc("hello world!");
변수를 통해 호출합니다. 출력: hello world!

2: 클로저

2.1 익명 함수를 넣습니다. function 일반 함수에서는 익명 함수도 반환할 수 있으며 이는 간단한 클로저를 구성합니다

function closureFunc1(){    $func = function(){        echo "hello";
    };    $func();
}
closureFunc1();//输出: hello

2.2

익명 함수에서는 reference로컬 변수

function closureFunc2(){    $num = 1;    $func = function(){        echo $num;
    };    $func();
}
closureFunc2();//Notice: Undefined variable: num

위 함수가 실행된 후 알림 오류가 보고됩니다. 이때, PHP 키워드 사용을 인용해야 합니다. 코드는 다음과 같습니다.

function closureFunc2(){    $num = 1;    $func = function() use($num){        echo $num;
    };    $func();
}
closureFunc2();//输出: 1

2.3

익명 함수 반환

function closureFunc3(){    $num = 1;    $func = function() use($num){        echo $num;
    };    return $func;
}$func = closureFunc3(); //函数返回匿名函数$func(); //然后我们在用$func() 调用//输出: 1
2.4 반환 시 어떻게 해야 합니까? 익명 함수에 매개변수를 전달하는 것은 어떻습니까? 사실 일반 함수에 매개변수를 전달하는 것과 똑같습니다

function closureFunc4(){    $num = 1;    $func = function($str) use($num){        echo $num;        echo "\n";        echo $str;
    };    return $func;
}$func = closureFunc4();$func("hello, closure4");//输出:
//1
//hello, closure4

2.5

클로저를 사용하여 컨텍스트에서 참조하는 변수의 값을 변경하는 방법은 무엇인가요?

function closureFunc5(){    $num = 1;    $func = function() use($num) {        echo "\n";        $num++;        echo $num;
    };    echo "\n";    echo $num;    return $func;
}$func = closureFunc5();$func();$func();$func();//输出:
// 1
// 2
// 2
// 2
위 입력 결과를 보면 목적이 달성되지 않았음이 분명합니다. 사실 & 참조 기호만 추가하면 됩니다

function closureFunc5(){    $num = 2;    $func = function() use(&$num) {        echo "\n";        $num++;        echo $num;
    };    echo "\n";    echo $num;    return $func;
}$func = closureFunc5();$func();$func();$func();//输出:
// 2
// 3
// 4
// 5

2.6 익명 함수를 매개변수로 전달하세요

function callFunc($func){    $func("argv");
}

callFunc(function($str){    echo $str;
})//输出:
// argv

위 내용은 PHP의 익명 함수 및 클로저의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.