PHP学习 -- 全局变量和局部变量

全局变量

PHP的全局变量和JS里面的全局变量不一样,JS里面的全局变量是那都可以访问到,PHP里的全局变量只有函数内部访问不到

1
2
3
4
5
6
7
8
<?php

$a = 1;
function main(){
echo $a; // 错误,函数内部访问不到全局变量
}

?>

局部变量

只作用于函数里面

1
2
3
4
5
6
7
8
9
<?php

$a = 1;
function main(){
$b = 3;
echo $b; // b是在函数内部定义,可以访问
}

?>

超全局变量

哪都可以访问 注:全局变量都储存在$GLOBALS下 通过$GLOBALS[‘变量名’]访问

局部作用域访问全局变量

使用$GLOBALS来访问全局变量

1
2
3
4
5
6
7
8
9
<?php

$a = 1;
function main(){
$b = 3;
echo $b,$GLOBALS['a']; // 因为$GLOBALS是超全局变量,所有的全局变量都储存在$GLOBALS下面,所以可以访问
}

?>

使用global关键字

1
2
3
4
5
6
7
8
9
$a = 1;
function main(){
global $a;
echo $a;
$a = 5; // 修改的还是一个变量 修改后a = 5;
}
main();
echo $a;
// 运行结果为 1 5

原理:在函数内部和外部,对同一个变量名使用一块内存地址保存数据,从而实现共同拥有

  1. 如果外部(全局)存在同名变量,直接指向外部变量的内存地址。
  2. 如果外部(全局)没有则先创建全局同名变量,再指向。