全局变量 Link to heading
PHP的全局变量和JS里面的全局变量不一样,JS里面的全局变量是那都可以访问到,PHP里的全局变量只有函数内部访问不到
<?php
$a = 1;
function main(){
echo $a; // 错误,函数内部访问不到全局变量
}
?>
局部变量 Link to heading
只作用于函数里面
<?php
$a = 1;
function main(){
$b = 3;
echo $b; // b是在函数内部定义,可以访问
}
?>
超全局变量 Link to heading
哪都可以访问 注:全局变量都储存在$GLOBALS下 通过$GLOBALS[‘变量名’]访问
局部作用域访问全局变量 Link to heading
使用$GLOBALS来访问全局变量 Link to heading
<?php
$a = 1;
function main(){
$b = 3;
echo $b,$GLOBALS['a']; // 因为$GLOBALS是超全局变量,所有的全局变量都储存在$GLOBALS下面,所以可以访问
}
?>
使用global关键字 Link to heading
$a = 1;
function main(){
global $a;
echo $a;
$a = 5; // 修改的还是一个变量 修改后a = 5;
}
main();
echo $a;
// 运行结果为 1 5
原理:在函数内部和外部,对同一个变量名使用一块内存地址保存数据,从而实现共同拥有
- 如果外部(全局)存在同名变量,直接指向外部变量的内存地址。
- 如果外部(全局)没有则先创建全局同名变量,再指向。