Php 从函数、变量范围内调用函数
我只想确认以下操作不起作用:Php 从函数、变量范围内调用函数,php,scope,Php,Scope,我只想确认以下操作不起作用: function f1(){ $test = 'hello'; f2(); } function f2(){ global $test; echo $test; } f1(); //expected result 'hello' 难道没有办法像Javascript那样在作用域链上“流动”吗?从手册上看,我的选择似乎是全局的,或者根本没有 我只是想知道这是否正确。它不会起作用 您可以通过以下方式将变量作为参数传递: function f1(){
function f1(){
$test = 'hello';
f2();
}
function f2(){
global $test;
echo $test;
}
f1(); //expected result 'hello'
难道没有办法像Javascript那样在作用域链上“流动”吗?从手册上看,我的选择似乎是全局的,或者根本没有
我只是想知道这是否正确。它不会起作用 您可以通过以下方式将变量作为参数传递:
function f1(){
$test = 'hello';
f2($test);
}
function f2($string){
echo $string;
}
f1(); //expected result 'hello'
它不起作用 您可以通过以下方式将变量作为参数传递:
function f1(){
$test = 'hello';
f2($test);
}
function f2($string){
echo $string;
}
f1(); //expected result 'hello'
添加
global$test
function f1(){
global $test;
$test = 'hello';
f2();
}
添加global$test
function f1(){
global $test;
$test = 'hello';
f2();
}
global
指令使本地函数成为顶级全局范围的一部分。它不会迭代备份函数调用堆栈以查找该名称的变量,它只会跳回到绝对顶层,因此如果您这样做:
$test = ''; // this is the $test that `global` would latch on to
function f1() { ... }
function f2() { ... }
<>基本上,考虑<代码>全局<代码>等价于:
$test =& $GLOBALS['test']; // make local $test a reference to the top-level $test var
global
指令使本地函数成为顶级全局范围的一部分。它不会迭代备份函数调用堆栈以查找该名称的变量,它只会跳回到绝对顶层,因此如果您这样做:
$test = ''; // this is the $test that `global` would latch on to
function f1() { ... }
function f2() { ... }
<>基本上,考虑<代码>全局<代码>等价于:
$test =& $GLOBALS['test']; // make local $test a reference to the top-level $test var
我知道我可以通过$test进入f2。这只是出于好奇。好吧,我只是添加了代码,因为我不确定,如果其他人也有同样的问题并看到这个页面,那就更好了。试试吧。。。这应该告诉你真的很快(比在这里问问题快得多)@ircmaxell谢谢。显然,如果我不知道示例代码的作用或不作用,那么编写示例代码是毫无意义的。问题更重要的是,“有没有办法做到这一点”而不进入全局范围。我知道我可以通过$test进入f2。这只是出于好奇。好吧,我只是添加了代码,因为我不确定,如果其他人也有同样的问题并看到这个页面,那就更好了。试试吧。。。这应该告诉你真的很快(比在这里问问题快得多)@ircmaxell谢谢。显然,如果我不知道示例代码的作用或不作用,那么编写示例代码是毫无意义的。问题更重要的是,“有没有办法做到这一点”而不涉及全球范围。是的,我只是做了一个评论,因为我想每个人都会这么说;)谢谢你的确认。是的,我只是做了一个评论,因为我想每个人都会这么说;)谢谢你的确认。