ホームページ  >  記事  >  バックエンド開発  >  PHP関数のクロージャ関数を作成するにはどうすればよいですか?

PHP関数のクロージャ関数を作成するにはどうすればよいですか?

WBOY
WBOYオリジナル
2024-04-10 10:33:02914ブラウズ

PHP のクロージャ関数は、外部関数の変数にアクセスできる別の関数内にネストされた匿名関数です。 use キーワードを使用すると、クロージャ関数の外部変数にアクセスできます。これは、リスト内の各要素に割引を適用する必要がある実際のシナリオに適用できます。

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

PHP 関数のクロージャー関数

クロージャー関数は、別の関数内にネストされた匿名関数です。外部関数の変数は次のようになります。外部関数が戻った場合でもアクセスされます。クロージャ関数は、再利用可能なコード ブロックを作成し、外部環境へのアクセスを維持できるため、PHP では非常に便利です。

クロージャ関数の作成

PHP でクロージャ関数を作成するには、function キーワードに続けて、オプションの名前とパラメータ リストを使用します。

$closure = function($arg1, $arg2) {
    // 函数体
};

クロージャ関数の変数スコープのルールは次のとおりです:

  • クロージャ関数は、ローカル変数やパラメータを含め、それが定義されているスコープ内で宣言されたすべての変数にアクセスできます。
  • クロージャ関数は、クロージャ関数内で明示的に use として宣言されていない限り、ネストされている関数の外で宣言された変数にアクセスできません。

#Useuse キーワード

use キーワードは、クロージャ関数に外部変数を導入するために使用されます。例:

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

    $closure = function() use ($arg1, $outerVar) {
        // 闭包函数可以访问 $arg1 和 $outerVar
    };
}

実用的なケース

リスト内の各要素に割引を適用する関数を作成する必要があるとします。これを行うには、割引額を計算するクロージャー関数を作成できます:

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]

以上がPHP関数のクロージャ関数を作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。