首页 > PHP教程 > PHP变量及数据类型

PHP变量作用域

PHP 中的每个变量都有一个针对它的作用域,它是指可以在其中访问变量(从而访问它的值)的一个领域

局部变量

在函数内部声明的变量就是局部变量,在一个函数内使用的变量不能在其外部使用,在一个函数外部定义的变量不能在其内部使用(需通过函数参数传递)。由于这个原因,函数内部的变量可以具有与其外部的变量相同的名称,但是它们仍然是完全不同的变量,并且具有不同的值。

1
2
3
4
5
6
7
8
<?php
$a = 1; /* 全局 */
function Test()
{
    echo $a; /* 局部变量 */
}
Test();  //NULL
?>

 

函数参数

参数可以按值传递,也可以按引用传递。

任何接受参数的函数都必须在函数首部中声明这些参数。

1
2
3
4
5
6
7
8
<?php
$a = 1; /* 全局 */
function Test($a)
{
    echo $a; /* 局部变量 */
}
Test($a);  // 1
?>

 

全局变量

被定义在所有函数以外的变量,其作用域是整个PHP文件,能在程序的任何地方访问。

include,require 引入文件那一行之前定义的变量可供包含文件使用。包含文件内定义的变量可供 include,require 那一行之后的父(包含)脚本使用。

只要在变量前面加上关键字GLOBAL,就可以将其识别为全局变量。

1
2
3
4
5
6
7
8
9
10
11
<?php
$a = 1;
$b = 2;
function Sum()
{
    global $a, $b;
    $b = $a + $b;
}
Sum();
echo $b;  // 3
?>

 

静态变量

函数参数在函数退出时会撤消,而静态变量则不同,静态变量在函数退出时不会丢失值,并且再次调用此函数时还能保留这个值。

在变量名前加上关键字STATIC就可以声明一个静态变量,在声明中用表达式的结果对其赋值会导致解析错误

1
2
3
4
5
6
7
8
9
10
11
<?php
function test()
{
    static $a = 0;
    echo $a;
    $a++;
}
 test();  //输出0
 test();  //输出1
echo $a;  //NULL
?>

静态变量也提供了一种处理递归函数的方法。递归函数是一种调用自己的函数

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function test()
{
    static $count = 0;
  
    $count++;
    echo $count;
    if ($count < 10) {
        test();
    }
    $count--;
}
?>

以上就是PHP变量作用域的全部内容,欢迎大家学习。

PHP历史版本

关闭
感谢您的支持,我会继续努力!
扫码打赏,建议金额1-10元


提醒:打赏金额将直接进入对方账号,无法退款,请您谨慎操作。