> 백엔드 개발 > PHP 튜토리얼 > PHP 함수의 클로저 함수를 만드는 방법은 무엇입니까?

PHP 함수의 클로저 함수를 만드는 방법은 무엇입니까?

WBOY
풀어 주다: 2024-04-10 10:33:02
원래의
989명이 탐색했습니다.

PHP의 클로저 함수는 외부 함수의 변수에 액세스할 수 있는 다른 함수 내에 중첩된 익명 함수입니다. use 키워드는 클로저 함수의 외부 변수에 액세스하는 데 사용할 수 있으며, 이는 목록의 각 요소에 할인을 적용해야 하는 실제 시나리오에 적용될 수 있습니다.

PHP 函数的闭包函数如何创建?

PHP 함수의 클로저 함수

클로저 함수는 외부 함수가 반환된 경우에도 외부 함수의 변수에 액세스할 수 있는 다른 함수에 중첩된 익명 함수입니다. 클로저 함수는 재사용 가능한 코드 블록을 생성하고 외부 환경에 대한 액세스를 유지할 수 있기 때문에 PHP에서 매우 유용합니다.

클로저 함수 만들기

PHP에서 클로저 함수를 만들려면 function 키워드와 선택적 이름 및 인수 목록을 사용하세요. function 关键字,后跟一个可选的名称和参数列表:

$closure = function($arg1, $arg2) {
    // 函数体
};
로그인 후 복사

闭包函数中的变量范围规则如下:

  • 闭包函数可以访问在其定义位置作用域中声明的所有变量,包括局部变量和参数。
  • 闭包函数不能访问它嵌套在其中的函数之外声明的变量,除非这些变量在闭包函数中被显式地声明为 use

使用 use 关键字

use

function outerFunction($arg1) {
    $outerVar = '外部变量';

    $closure = function() use ($arg1, $outerVar) {
        // 闭包函数可以访问 $arg1 和 $outerVar
    };
}
로그인 후 복사

클로저 함수의 변수 범위 규칙은 다음과 같습니다.

  • 클로저 함수는 지역 변수 및 매개변수를 포함하여 정의된 범위에 선언된 모든 변수에 액세스할 수 있습니다.
  • 클로저 함수는 해당 변수가 클로저 함수에서 use로 명시적으로 선언되지 않는 한 중첩된 함수 외부에서 선언된 변수에 액세스할 수 없습니다.
use 키워드 사용

use 키워드는 클로저 함수에 외부 변수를 도입하는 데 사용됩니다. 예:

function applyDiscount($list, $discountPercentage) {
    // 创建闭包函数来计算折扣
    $discountClosure = function($item) use ($discountPercentage) {
        return $item - ($item * ($discountPercentage / 100));
    };

    // 将折扣闭包函数应用于列表中的每个元素
    return array_map($discountClosure, $list);
}
로그인 후 복사
실용 예

🎜🎜목록의 각 요소에 할인을 적용하는 함수를 만들어야 한다고 가정해 보겠습니다. 이를 위해 할인 금액을 계산하는 클로저 함수를 생성할 수 있습니다: 🎜
function outerFunction($arg1) {
    $outerVar = '外部变量';

    $closure = function() use ($arg1, $outerVar) {
        // 闭包函数可以访问 $arg1 和 $outerVar
        echo "arg1: $arg1<br>";
        echo "outerVar: $outerVar<br>";
    };

    // 调用闭包函数
    $closure();
}

applyDiscount([10, 20, 30], 10); // [9, 18, 27]
로그인 후 복사
🎜🎜전체 코드: 🎜🎜rrreee

위 내용은 PHP 함수의 클로저 함수를 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿