当前位置:首页 > PHP教程 > php应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2014-07-30 13:18:58 浏览: 评论:0 

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

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

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

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

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

PHP实例代码如下:

  1. <?php 
  2. // 比较global、GLOBALS、static 
  3. $k = 0; 
  4. function test1() { 
  5.  global $k
  6.  static $i = 0; 
  7.  echo 'i:', ++$i'<br/>'
  8.  echo 'k:', ++$k'<br/>'
  9. test1(); 
  10. test1(); 
  11. echo 'i:'$i'<br/>'
  12. echo 'k:'$k'<br/>'
  13.  
  14. echo '------------------<br/>'
  15.  
  16. function test2() { 
  17.  global $k
  18.  static $i = 0; 
  19.  echo 'i:', ++$i'<br/>'
  20.  echo 'k:', ++$k'<br/>'
  21. test2(); 
  22. test2(); 
  23. echo 'i:'$i'<br/>'
  24. echo 'k:'$k'<br/>'
  25.  
  26. $m = 0; 
  27. $n = 0; 
  28. function test3() { 
  29.  global $m
  30.  echo 'm:'$m++ , '<br/>'
  31.  echo 'n:'$GLOBALS['n']++ , '<br/>'
  32.  unset($m$GLOBALS['n']); 
  33. echo '------------------<br/>'
  34. test3(); 
  35.  
  36. echo 'm:'$m'<br/>'
  37. echo 'n:'$n'<br/>'
  38.  
  39. echo '------------------<br/>'
  40.  
  41. static $x = 0; 
  42. function test4() { 
  43.  echo 'x:'$x++ , '<br/>'
  44.  
  45. test4(); 
  46. /* 
  47. 结果如下: 
  48.  
  49. i:1  
  50. k:1  
  51. i:2  
  52. k:2  
  53. i:  
  54. k:2  
  55. ------------------  
  56. i:1  
  57. k:3  
  58. i:2  
  59. k:4  
  60. i:  
  61. k:4  
  62. ------------------  
  63. m:0  
  64. n:0  
  65. m:1  
  66. n:  
  67. ------------------  
  68. x: 
  69. */ 

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

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

Tags: php关键字 global static

分享到: