PHP $GLOBALS 与 global

282 阅读1分钟
  • $GLOBALS

    • 它也是一个数组,其中存储了我们自己定义的所有全局变量。
    • 每个全局变量的变量名,就是$GLOBALS数组的一个单元。
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <?php
  $v1 = 1;
  $v2 = 'abc';
  echo $GLOBALS['v1']; // 1
  echo $GLOBALS['v2']; // abc
  function f1 () {
    $v3 = 'dzm';
    echo $GLOBALS['v1']; // 1
    echo $GLOBALS['v3']; // 空的,因为是局部变量
    $GLOBALS['v1']++;
    echo $GLOBALS['v1']; // 2, 也可以修改全局变量
  }
  f1();
  echo $GLOBALS['v1']; // 2, 因为在函数里面修改了
  ?>
</body>
</html>

  • global 用于在局部作用域中,修饰一个跟全局变量同名的局部变量。 此时该局部变量也可以使用全局变量的值了,实际上他们其实是类似变量引用关系。
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <?php
  $v1 = 1;
  $v2 = 2;
  function f1() {
    // 其含义是:定义一个局部变量 $v1
    // 并且该变量跟全局变量 $v1 同名,并处于"引用关系"
    // 局部变量通过 global 修饰之后也会跟全局同名变量指向同一份数据
    global $v1;
    $v2 = 0;
    echo '在函数中:v1 = ' . $v1; // 1
    echo '在函数中:v2 = ' . $v2; // 0
    $v1++;
  }
  f1();
  echo '在函数外:v1 = ' . $v1; // 2
  echo '在函数外:v2 = ' . $v2; // 2
  ?>
</body>
</html>