首頁  >  文章  >  後端開發  >  PHP 函數的閉包函數如何建立?

PHP 函數的閉包函數如何建立?

WBOY
WBOY原創
2024-04-10 10:33:02914瀏覽

PHP中的閉包函數是嵌套在另一個函數中的匿名函數,可以存取外部函數的變數。使用use關鍵字可以在閉包函數中存取外部變量,可以在實戰中應用於需要對列表中的每個元素應用折扣的場景。

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

PHP 函數中的閉包函數

已閉包函數是嵌套在另一個函數中的匿名函數,它可以存取外部函數的變量,即使外部函數已經返回。閉包函數在 PHP 中非常有用,因為它允許建立可重複使用的程式碼區塊並保持對外部環境的存取。

建立閉包函數

要用PHP 建立閉包函數,請使用function 關鍵字,後面跟著一個可選的名稱和參數清單:

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

閉包函數中的變數範圍規則如下:

  • 閉包函數可以存取在其定義位置作用域中聲明的所有變量,包括局部變數和參數。
  • 閉包函數不能存取它嵌套在其中的函數之外聲明的變量,除非這些變數在閉包函數中被明確地宣告為 use

使用use 關鍵字

#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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn