首页 > php开发 > php中global和static两个关键字详解

php中global和static两个关键字详解

1.global在整个页面起作用。

2.static只在function和class内起作用。

global和$GLOBALS使用基本相同,但在实际开发中大不相同.

global在函数产生一个指向函数外部变量的别名变量,而不是真正的函数外部变量,一但改变了别名变量的指向地址,就会发生一些意料不到情况.

$GLOBALS[]确确实实调用是外部的变量,函数内外会始终保持一致.

PHP实例代码如下:

<?php 
	// 比较global、GLOBALS、static 
	$k = 0; 
	function test1() { 
	 global $k; 
	 static $i = 0; 
	 echo 'i:', ++$i, '<br/>'; 
	 echo 'k:', ++$k, '<br/>'; 
	} 
	test1(); 
	test1(); 
	echo 'i:', $i, '<br/>'; 
	echo 'k:', $k, '<br/>'; 
	 
	echo '------------------<br/>'; 
	 
	function test2() { 
	 global $k; 
	 static $i = 0; 
	 echo 'i:', ++$i, '<br/>'; 
	 echo 'k:', ++$k, '<br/>'; 
	} 
	test2(); 
	test2(); 
	echo 'i:', $i, '<br/>'; 
	echo 'k:', $k, '<br/>'; 
	 
	$m = 0; 
	$n = 0; 
	function test3() { 
	 global $m; 
	 echo 'm:', $m++ , '<br/>'; 
	 echo 'n:', $GLOBALS['n']++ , '<br/>'; 
	 unset($m, $GLOBALS['n']); 
	} 
	echo '------------------<br/>'; 
	test3(); 
	 
	echo 'm:', $m, '<br/>'; 
	echo 'n:', $n, '<br/>'; 
	 
	echo '------------------<br/>'; 
	 
	static $x = 0; 
	function test4() { 
	 echo 'x:', $x++ , '<br/>'; 
	} 
	 
	test4(); 
	/* 
	结果如下: 
	 
	i:1  
	k:1  
	i:2  
	k:2  
	i:  
	k:2  
	------------------  
	i:1  
	k:3  
	i:2  
	k:4  
	i:  
	k:4  
	------------------  
	m:0  
	n:0  
	m:1  
	n:  
	------------------  
	x: 
	*/ 

global关键字如果用在function内部,则说明这个function内用的这个变量是全局的,全局变量就是在整个页面里都能起作用.

static就是表示静态,所谓的静态,其实是在function或者class内部而言的,function中static的变量,在funciton执行完之后,不会消失,可以在下次执行的时候继续使用.

文章链接:http://www.phprm.com/develop/fs4065.html

随便收藏,请保留本文地址!

标签:global php关键字 static

相关文章

发表留言