Categories
php

php 闭包传值处理

方法 1:使用 use 关键字按引用传递(最直接的方法)

这是最常用和最直接的方法。通过在使用 use 时在变量前加上 & 符号,你可以按引用传递变量。这意味着闭包内外的变量指向同一个内存地址,在闭包内修改它,外部的值也会同步改变。php复制下载

$externalValue = 10;
$anotherVariable = "Hello";

$myClosure = function() use (&$externalValue, $anotherVariable) {
    // 修改按引用传递的变量
    $externalValue += 50; // 这会影响外部的 $externalValue
    
    // 这是按值传递的,修改它不会影响外部的 $anotherVariable
    $anotherVariable .= " World"; 
    
    echo "Inside closure: externalValue = $externalValue, anotherVariable = $anotherVariable\n";
};

$myClosure(); // 输出:Inside closure: externalValue = 60, anotherVariable = Hello World

echo "Outside: externalValue = $externalValue\n"; // 输出:Outside: externalValue = 60
echo "Outside: anotherVariable = $anotherVariable\n"; // 输出:Outside: anotherVariable = Hello




关键点:

  • use (&$variable):按引用传递,内部修改影响外部。
  • use ($variable):按值传递(默认),内部修改影响外部。闭包使用的是它创建时该变量的一个副本