PHP的变量范围
PHP变量范围 变量的范围定义为程序中可以访问它的范围。换句话说,“变量的范围是程序中定义并可以访问的部分。”…
PHP变量范围
变量的范围定义为程序中可以访问它的范围。换句话说,“变量的范围是程序中定义并可以访问的部分。”
PHP具有三种类型的变量作用域:
- 局部变量
- 全局变量
- 静态变量
局部变量
在函数中声明的变量称为该函数的局部变量。这些局部变量仅在声明它们的特定函数中具有作用域。这意味着这些变量不能在函数外部访问,因为它们具有局部作用域。
具有相同名称的函数之外的变量声明为函数内声明变量完全不同。让我们借助示例来了解局部变量:
档案:local_variable1.php
1
2
3
4
5
6
7
8
|
<?php
function local_var()
{
$num = 45;//local variable
echo “Local variable declared inside the function is: “. $num;
}
local_var();
?>
|
输出:
1
|
Local variable declared inside the function is: 45
|
档案:local_variable2.php
1
2
3
4
5
6
7
8
9
10
|
<?php
function mytest()
{
$lang = “PHP”;
echo “Web development language: “ .$lang;
}
mytest();
//using $lang (local variable) outside the function will generate an error
echo $lang;
?>
|
输出:
1
2
|
Web development language: PHP
Notice: Undefined variable: lang in D:xampphtdocsprogramp3.php on line 28
|
全局变量
全局变量是在函数外部声明的变量。可以在程序中的任何位置访问这些变量。在函数内部要访问函数的全局变量,请在变量前使用global关键字。在函数外部无需使用任何关键字来访问函数外部的全局变量。
global的正确用法是:”在一个函数中引入外部的一个变量,如果该变量没有通过参数传递进来,那么就通过global引入进来。” 也就是说,当一个函数引用一个外部变量时,可以在函数内通过global来声明该变量,这样该变量就可以在函数中使用了(相当于当作参数传递进来)。
让我们借助示例来了解全局变量:
例:
档案:global_variable1.php
1
2
3
4
5
6
7
8
9
10
11
|
<?php
$name = “Sanaya Sharma”;//Global Variable
function global_var()
{
global $name;
echo “Variable inside the function: “. $name;
echo “</br>”;
}
global_var();
echo “Variable outside the function: “. $name;
?>
|
输出:
1
2
|
Variable inside the function: Sanaya Sharma
Variable outside the function: Sanaya Sharma
|
注意:如果不使用global关键字,则尝试在函数内部访问全局变量时,将生成错误,指出该变量未定义。
例:
档案:global_variable2.php
1
2
3
4
5
6
7
8
9
|
<?php
$name = “Sanaya Sharma”;//global variable
function global_var()
{
echo “Variable inside the function: “. $name;
echo “</br>”;
}
global_var();
?>
|
输出:
1
2
|
Notice: Undefined variable: name in D:xampphtdocsprogramp3.php on line 6
Variable inside the function:
|
使用$ GLOBALS而不是global
在函数内部使用全局变量的另一种方法是预定义的$GLOBALS数组。
例:
档案:global_variable3.php
1
2
3
4
5
6
7
8
9
10
|
<?php
$num1 = 5;//global variable
$num2 = 13;//global variable
function global_var()
{
$sum = $GLOBALS[‘num1’] + $GLOBALS[‘num2’];
echo “Sum of global variables is: “ .$sum;
}
global_var();
?>
|
输出:
1
|
Sum of global variables is: 18
|
如果两个变量(局部变量和全局变量)具有相同的名称,则局部变量的优先级高于函数内部的全局变量。
例:
档案:global_variable2.php
1
2
3
4
5
6
7
8
9
|
<?php
$x = 5;
function mytest()
{
$x = 7;
echo “value of x: “ .$x;
}
mytest();
?>
|
输出:
1
|
Value of x: 7
|
注意:局部变量比全局变量具有更高的优先级。
静态变量
一旦完成执行并释放内存,PHP便具有删除该变量的功能。有时,即使函数执行完成后,我们也需要存储变量。因此,变量作用域的另一个重要特征是静态变量。我们在变量之前使用static关键字定义一个变量,该变量称为static变量。
静态变量仅存在于局部函数,但在程序执行离开作用域后不会释放其内存。借助示例了解它:
例:
文件:static_variable.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<?php
function static_var()
{
static $num1 = 3;//static variable
$num2 = 6;//Non-static variable
//increment in non-static variable
$num1++;
//increment in static variable
$num2++;
echo “Static: “ .$num1 .“</br>”;
echo “Non-static: “ .$num2 .“</br>”;
}
//first function call
static_var();
//second function call
static_var();
?>
|
输出:
1
2
3
4
|
Static: 4
Non–static: 7
Static: 5
Non–static: 7
|
您必须注意,$num1在每个函数调用之后定期增加,而$num2没有。这就是为什么因为$num1不是静态变量,所以它在执行每个函数调用后释放了其内存。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。
还没有任何评论,赶紧来占个楼吧!