首页 > 开发 > PHP > 正文

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

2024-05-04 21:58:16
字体:大 中 小
来源:转载
供稿:网友

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

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

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表