咨询:PHP中被函数包含的文件为何能使用函数参数
为什么被包含的second.php能访问函数参数$b?
嘿,你猜的完全没错!核心原因就是这个second.php是从函数内部被引入的,它会直接继承当前函数的局部作用域,所以能顺理成章地使用函数里的参数$b。
我给你拆解下PHP里include/require的工作逻辑:
- 当你在某个作用域里执行
include时,被包含文件的代码并不是独立运行的,而是直接嵌入到当前作用域中执行。 - 简单说就是:你把
second.php里的代码原封不动复制粘贴到myFunction里include那一行的位置,运行效果是完全一样的。
放到你的代码场景里:
当myFunction(5,['Name'=>'Stefan'])执行时,函数内部的局部作用域已经有了$a=5和$b=['Name'=>'Stefan']这两个变量。此时执行include 'second.php',相当于把<h1><?php echo $b['Name']?></h1>这段代码直接插到函数里,那它自然能访问到当前作用域里的$b变量,输出<h1>Stefan</h1>——甚至你如果在second.php里写echo $a,也会输出5,因为$a同样在这个局部作用域里。
举个反例验证下:
如果把include 'second.php'移到myFunction外面(全局作用域),那运行时就会报错提示$b未定义,因为此时second.php的代码处于全局作用域,根本拿不到函数内部的局部变量$b。
内容的提问来源于stack exchange,提问作者user6912198
相关产品推荐
相关产品推荐

