我执行了以下代码,但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
?>
但是我把代码更改为:
<?php
$a='a';$b='b';
function test($a,$b){
echo $a.$b;
}
test($a,$b); // ab
?>
为什么$a
和$b
在第一种情况下未定义,因为我之前定义过它们?
为什么参数需要在php中传递?在JavaScript
之类的其他内容中不需要它。
答案 0 :(得分:2)
如果在函数外定义变量,则需要指定global
关键字。如:
<?php
$a='a';$b='b';
function test(){
global $a, $b;
echo $a.$b;
}
test(); // error
?>
但是你的第二个例子是推荐的处理方式,通常是。
答案 1 :(得分:1)
function test() {
global $a, $b;
echo $a . $b; //or $GLOBALS['a'].$GLOBALS['b'];
}
您将获得正确的值。
答案 2 :(得分:0)
试试这个
$a = '101';
$func = function() use($a) {
echo $a;
};
function func_2() {
global $func;
$a = 'not previouse a';
$func();
}
func_2();