PHP变量范围

本文概述

变量的范围定义为程序中可以访问它的范围。换句话说, “变量的范围是程序中定义并可以访问的部分。”

PHP具有三种类型的变量作用域:

  1. 局部变量
  2. 全局变量
  3. 静态变量

局部变量

在函数中声明的变量称为该函数的局部变量。这些局部变量仅在声明它们的特定函数中具有其作用域。这意味着这些变量不能在函数外部访问, 因为它们具有局部作用域。

具有相同名称的函数外部的变量声明与函数内部声明的变量完全不同。让我们借助示例来了解局部变量:

档案:local_variable1.php

<?php
	function local_var()
	{
		$num = 45;	//local variable
		echo "Local variable declared inside the function is: ". $num;
	}
	local_var();
?>

输出

Local variable declared inside the function is: 45

档案:local_variable2.php

<?php
	function mytest()
	{
		$lang = "PHP";
		echo "Web development language: " .$lang;
	}
	mytest();
	//using $lang (local variable) outside the function will generate an error
	echo $lang;
?>

输出

Web development language: PHP
Notice: Undefined variable: lang in D:\xampp\htdocs\program\p3.php on line 28

全局变量

全局变量是在函数外部声明的变量。可以在程序中的任何位置访问这些变量。要访问函数中的全局变量, 请在变量前使用GLOBAL关键字。但是, 这些变量可以直接访问或在函数外部使用而无需任何关键字。因此, 无需使用任何关键字来访问函数外部的全局变量。

让我们借助示例了解全局变量:

例:

档案:global_variable1.php

<?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;
?>

输出

Variable inside the function: Sanaya Sharma
Variable outside the function: Sanaya Sharma

注意:如果不使用global关键字, 则尝试访问函数内部的全局变量时, 将产生错误, 指出该变量未定义。

例:

档案:global_variable2.php

<?php
	$name = "Sanaya Sharma";		//global variable
	function global_var()
	{
		echo "Variable inside the function: ". $name;
		echo "</br>";
	}
	global_var();
?>

输出

Notice: Undefined variable: name in D:\xampp\htdocs\program\p3.php on line 6
Variable inside the function:

使用$ GLOBALS而不是global

在函数内部使用全局变量的另一种方法是预定义的$ GLOBALS数组。

例:

档案:global_variable3.php

<?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();
?>

输出

Sum of global variables is: 18

如果两个变量(局部变量和全局变量)具有相同的名称, 则局部变量的优先级高于函数内的全局变量。

例:

档案:global_variable2.php

<?php
	$x = 5;
	function mytest()
	{
		$x = 7;
		echo "value of x: " .$x;
	}
	mytest();
?>

输出

Value of x: 7

注意:局部变量比全局变量具有更高的优先级。

静态变量

一旦完成执行并释放内存, PHP便具有删除该变量的功能。有时, 即使在函数执行完成后, 我们也需要存储变量。因此, 变量作用域的另一个重要特征是静态变量。我们在变量之前使用static关键字定义一个变量, 该变量称为static变量。

静态变量仅存在于局部函数中, 但是在程序执行离开作用域后不会释放其内存。借助示例了解它:

例:

文件:static_variable.php

<?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();
?>

输出

Static: 4
Non-static: 7
Static: 5
Non-static: 7

你必须注意, 在每个函数调用之后, $ num1会定期增加, 而$ num2不会。这就是为什么因为$ num1不是静态变量, 所以它在执行每个函数调用后释放了其内存。


来源:

https://www.srcmini02.com/29091.html

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?