PHP全局局部变量
PHP 里函数外面定义的变量是全局变量,函数里面定义的叫局部变量。默认情况下两者互不干扰,函数内部直接拿外面的变量会报未定义。
想在函数里用外面的变量,两种办法:global 关键字,或者 $GLOBALS 数组。
<?php
$name = "小明"; // 全局变量
function say1() {
// echo $name; // 报错,函数内拿不到
global $name; // 先声明再使用
echo $name;
}
function say2() {
echo $GLOBALS['name']; // 超全局数组,随时可拿
}
函数里定义的局部变量,函数一执行完就销毁。想让它下次调用还记得上次的值,加个 static。
<?php
function count1() {
static $i = 0; // 只初始化一次
$i++;
echo $i;
}
count1(); // 输出 1
count1(); // 输出 2
注意点:global 和 $GLOBALS 指向的是同一份内存,改哪个另一个都跟着变。局部变量就算跟全局变量重名,也是两块独立的内存,不会互相覆盖。写函数时尽量少用 global,参数传进去更清爽。
说点什么 0