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

WBOY
發布: 2024-04-10 10:33:02
原創
898 人瀏覽過

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

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!