Ⅰ php闭包函数怎么使用外部变量
使用use关键词引入变量即可,请看代码:
<?php
functioncallFunc($callback){
returncall_user_func($callback);
}
$author='Zjmainstay';
echocallFunc(function()use($author){#这里
return"Theauthoris{$author}";
});
Ⅱ php 调用 其他文件变量
★ PHP变量是有作用域(指定的有效范围)的:
函数内声明的变量只对该函数有效,出了函数的范围就会无效;
同理在函数以外声明的变量在函数中访问也是无效的;
函数内的变量跨函数访问也是无效的。
★ 问题推测:
听你上面说的情况,你的$username变量应该声明在函数或者类里边,然后从函数外访问;或者声明在函数外,但从函数中进行访问了。
★ 解决方法:
函数中的变量要想让其全局有效必须得在变量前面加global关键字声明成全局变量才可以在函数以外访问到;同理在函数外声明的函数如果想要在函数中来访问,也要使用global关键字来声明为全局变量。
★关于php变量作用域的示范:
举例有php文件b.php如下:
<?php
functionfunc1(){
global$a2;
$a1='vara1Infilebfunctionfunc1';
$a2='vara2Infilebfunctionfunc1';
}
?>
然后有php文件a.php如下:
<?php
error_reporting(0);//关闭错误报告
include('b.php');//引用b.php
$a3='vara3Infileaoutoffunction';
$a4='vara4Infileaoutoffunction';
functionfunc2(){
global$a5;
$a5='vara5Infileafunctionfunc2';
$a6='vara6Infileafunctionfunc2';
}
functionfunc3(){
echo'printvar$a1to$a6infunctionfunc3:<br>';
var_mp($a1);
var_mp($a2);
var_mp($a3);
var_mp($a4);
var_mp($a5);
var_mp($a6);
}
functionfunc4(){
echo'printvar$a1to$a6infunctionfunc4:<br>';
global$a1;
global$a2;
global$a3;
global$a4;
global$a5;
global$a6;
var_mp($a1);
var_mp($a2);
var_mp($a3);
var_mp($a4);
var_mp($a5);
var_mp($a6);
}
echo'printvar$a1$a2$a5$a6infilea:<br/>';
var_mp($a1);
var_mp($a2);
var_mp($a5);
var_mp($a6);
func3();
func4();
func1();
func2();
echo'printvar$a1$a2$a5$a6infilea(aftercallfunc1andfunc2):<br/>';
var_mp($a1);
var_mp($a2);
var_mp($a5);
var_mp($a6);
func3();
func4();
?>
执行a.php后就会输出:
printvar$a1$a2$a5$a6infilea:<!--$a1$a2$a5$a6都被声明在函数中,此时因为函数未被调用,所以都无法正确取值-->
null
null
null
null
printvar$a1to$a6infunctionfunc3:<!--$a1$a2$a5$a6同上,$a3和$a4因为在函数外声明所以全部无法正确取值-->
null
null
null
null
null
null
printvar$a1to$a6infunctionfunc4:<!--$a1$a2$a3$a4同上,$a3和$a4用global声明为全局了,所以可以正确取值-->
null
null
string'vara3Infileaoutoffunction'(length=32)
string'vara4Infileaoutoffunction'(length=32)
null
null
printvar$a1$a2$a5$a6infilea(aftercallfunc1andfunc2):<!--在执行func1和func2之后被关键字声明为全局变量的$a2和$a5可以被正确取值-->
null
string'vara2Infilebfunctionfunc1'(length=31)
string'vara5Infileafunctionfunc2'(length=31)
null
printvar$a1to$a6infunctionfunc3:<!--因为所有变量不是声明在函数func3外就是被声明在其他函数中,所以都无法正确取值-->
null
null
null
null
null
null
printvar$a1to$a6infunctionfunc4:<!--除了在其它函数内未被声明为全局的$a1和$a6,其他变量均被正确取值-->
null
string'vara2Infilebfunctionfunc1'(length=31)
string'vara3Infileaoutoffunction'(length=32)
string'vara4Infileaoutoffunction'(length=32)
string'vara5Infileafunctionfunc2'(length=31)
null
上面的代码可以让你很好的理解变量作用域的规则。
★ 资料参考
更多的变量作用域资料请参考http://www.php.net/manual/zh/language.variables.scope.php
Ⅲ 一个PHP文件想用另一个PHP文件里的变量怎么办
需要准备的材料分别是:电脑、php编辑器、浏览器。
1、首先,打开php编辑器,新建php文件,例如:index2.php,定义一个变量。