今天在开发中,使用global变量,输出的是null。
首先来看一个正常的
<?php
foreach (range(1,5) as $c) {
$c = array_map(function () {
global $c;
return $c;
}, [1]);
var_dump($c);
}
?>
输出的内容为
array (size=1)
0 => int 1
array (size=1)
0 => int 2
array (size=1)
0 => int 3
array (size=1)
0 => int 4
array (size=1)
0 => int 5
但是当把上面的代码稍作修改之后
<?php
function test() {
foreach (range(1,5) as $c) {
$c = array_map(function () {
global $c;
return $c;
}, [1]);
var_dump($c);
}
}
test();
输出的内容
array (size=1)
0 => null
array (size=1)
0 => null
array (size=1)
0 => null
array (size=1)
0 => null
array (size=1)
0 => null
得出结论,global一个变量实际上是对一个全局变量的引用,而不是对一个局部变量的引用