为什么php变量作用域在函数中不起作用
我执行了以下代码,但php说:为什么php变量作用域在函数中不起作用,php,Php,我执行了以下代码,但php说: Notice: Undefined variable: b in ..\..\..\demo.php on line 4 Notice: Undefined variable: a in ..\..\..\demo.php on line 4 Php代码: <?php $a='a';$b='b'; function test(){ echo $a.$b; } test(); // error ?> 但我将代码更改为
Notice: Undefined variable: b in ..\..\..\demo.php on line 4
Notice: Undefined variable: a in ..\..\..\demo.php on line 4
Php代码:
<?php
$a='a';$b='b';
function test(){
echo $a.$b;
}
test(); // error
?>
但我将代码更改为:
<?php
$a='a';$b='b';
function test($a,$b){
echo $a.$b;
}
test($a,$b); // ab
?>
既然我以前定义过,$a
和$b
为什么在第一种情况下没有定义?
为什么参数需要在php中传递?在其他类似
JavaScript
的应用程序中不需要它 如果变量是在函数外部定义的,则需要指定global
关键字。例如:
<?php
$a='a';$b='b';
function test(){
global $a, $b;
echo $a.$b;
}
test(); // error
?>
但第二个示例是推荐的处理方法,通常。如果变量是在函数外部定义的,则需要指定
全局
关键字。例如:
<?php
$a='a';$b='b';
function test(){
global $a, $b;
echo $a.$b;
}
test(); // error
?>
但您的第二个示例是推荐的处理方法,通常。您提供的第一个示例中的$a和$b试图分别从本地范围而不是全局范围访问这些变量。你可以试着这样声明它们
function test() {
global $a, $b;
echo $a . $b; //or $GLOBALS['a'].$GLOBALS['b'];
}
您将获得正确的值。在您提供的第一个示例中,$a和$b试图分别从本地范围而不是全局范围访问这些变量。你可以试着这样声明它们
function test() {
global $a, $b;
echo $a . $b; //or $GLOBALS['a'].$GLOBALS['b'];
}
您将得到正确的值。试试这个
$a = '101';
$func = function() use($a) {
echo $a;
};
function func_2() {
global $func;
$a = 'not previouse a';
$func();
}
func_2();
试试这个
$a = '101';
$func = function() use($a) {
echo $a;
};
function func_2() {
global $func;
$a = 'not previouse a';
$func();
}
func_2();
添加
全局$a,$b代码>在第一个函数中,它将工作:)PHP和Javascript不遵循相同的范围规则。参见添加global$a,$b代码>在第一个函数中,它将工作:)PHP和Javascript不遵循相同的范围规则。看见