PHP のクロージャ関数は、外部関数の変数にアクセスできる別の関数内にネストされた匿名関数です。 use キーワードを使用すると、クロージャ関数の外部変数にアクセスできます。これは、リスト内の各要素に割引を適用する必要がある実際のシナリオに適用できます。
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 サイトの他の関連記事を参照してください。