布鸽の窝

Vibe Coding大神降临?鸽布咕咕不是鸽!

PHP基础入门笔记2(变量作用域Global和Static)

作者: lolita | 发布时间: 2026-05-18 15:12:39


在 PHP 中,变量可以在脚本中的任何地方被声明。变量的作用域是脚本中变量可被引用/使用的位置:

在函数外部声明的变量具有全局作用域,并且只能在函数外部访问。
在函数内部声明的变量具有局部作用域,并且只能在函数内部访问。
您可以在不同的函数中拥有相同名称的局部变量,因为局部变量仅在其声明的函数中可识别。

<!DOCTYPE html>
<html>
<body>

<?php
$x = 5; // 全局作用域

function myTest() {
  // 在函数内部使用 x 将会产生错误
  echo "<p>函数内部的变量 x 是:$x</p>";
} 
myTest();

echo "<p>函数外部的变量 x 是:$x</p>";
?>

</body>
</html>

输出:
函数内部的变量 x 是:
函数外部的变量 x 是:5

<!DOCTYPE html>
<html>
<body>

<?php
function myTest() {
  $x = 5; // 局部作用域
  echo "<p>函数内部的变量 x 是:$x</p>";
} 
myTest();

// 在函数外部使用 x 将会产生错误
echo "<p>函数外部的变量 x 是:$x</p>";
?>

</body>
</html>

输出:
函数内部的变量 x 是:5
函数外部的变量 x 是:

global 关键字
用于从函数内部访问全局变量:

<!DOCTYPE html>
<html>
<body>

<?php
$x = 5;
$y = 10;

function myTest() {
  global $x, $y;
  $y = $x + $y;
} 

myTest();  // 运行函数
echo $y; // 输出变量 $y 的新值
?>

</body>
</html>

PHP 还将所有全局变量存储在名为 $GLOBALS[index] 的数组中。index 保存变量的名称。该数组也可以在函数内部访问,并且可以用于直接更新全局变量:

<!DOCTYPE html>
<html>
<body>

<?php
$x = 5;
$y = 10;

function myTest() {
  $GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];
} 

myTest();
echo $y;
?>

</body>
</html>

static 关键字
普通局部变量是“阅后即焚”的,函数执行完就没了;而 static 静态变量具有“持久记忆”,它只在第一次被初始化,之后每次调用都会保留并使用上一次更新后的值:

<!DOCTYPE html>
<html>
<body>

<?php
function myTest() {
  static $x = 0;
  echo $x;
  $x++;
}

myTest();
echo "<br>";
myTest();
echo "<br>";
myTest();
?> 

</body>
</html>

输出:
0
1
2