鍍金池/ 問答/PHP/ php匿名函數(shù)變量作用域問題

php匿名函數(shù)變量作用域問題

圖片描述

如圖,如何更優(yōu)雅地訪問匿名函數(shù)外的$data?

回答
編輯回答
網(wǎng)妓

function() use($data){}
更優(yōu)雅一些,但需要注意的是繼承過來的$data值與這個閉包聲明的上下文有關(guān)
例如:

[1]
$data = 1;
function() use($data){}//此時繼承的變量值為1
[2]
$data = 1;
function() use($data){}
$data = 2;
此時再調(diào)用閉包函數(shù),$data的取值為其聲明時的上下文的值,值為1
$data = 1;
$x = function() use ($data){
    var_dump($data);
    exit;
};
$data = 2;
function ttt($a)
{
    $a();
}
ttt($x);
2017年9月18日 00:56
編輯回答
擱淺

從父作用域中繼承變量 用use

function()use($data){}
2017年6月5日 12:45
編輯回答
陪她鬧

補充一下,global和$GLOBALS超全局變量也可以讀到外部定義的全局變量,了解一下

2018年4月21日 04:51