免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享

【4】php变量的作用域

本文来自:★flash之路-flash技术交流★ 转帖请注明出处! 作者:flashroad 您是第2385个浏览者

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
flashroad友情提示:
“点评”不是“回帖”!
接第【3】课讲述

========================================================
变量的作用域是脚本中变量可被引用/使用的部分。超出了作用域的话,变量的引用或使用就会遭到拒绝。
PHP 有四种不同的变量作用域:
local
global
static
parameter
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.

获得 花仙子卡 一张

卡片说明:flashroad帮助迷路的小朋友找到家长,家长为表达谢意,付出了6威望

卡片效果:+6

友情提示:单击下列任意一个表情,即可瞬间自动回复本帖!

好贴......
郁闷......
开心......
擦汗......
鄙视......
狂怒
谢谢
爱你呦
拜托了
嗯嗯
OMG
求关注
伤心......
无奈.....
无奈.....
无奈.....
无奈.....
无奈.....
哈哈哈
NO
OK
what
我来了

最近访问本帖者列表:

flashroad
访问时间:2018-09-22 18:50

打赏

取消

感谢您的支持,我会继续努力的!

扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

Powered by 爱秀代码,分享从这里开始,精彩与您同在

点评
B Color Smilies

您还可以输入:个字符
X

X

[局部]和[全局]作用域

在所有函数外部定义的变量,拥有全局作用域。[注:本系列教程中所说的函数乃是编程语言中的专有名词,它和数学课上我们学习的函数不是一回事]
除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字。
在 PHP 函数内部声明的变量是局部变量,仅能在函数内部访问:
  1. <?php
  2. $x=5; // 全局变量

  3. function myTest()
  4. {
  5.     $y=10; // 局部变量
  6.     echo "<p>测试函数内变量:<p>";
  7.     echo "变量 x 为: $x";
  8.     echo "<br>";
  9.     echo "变量 y 为: $y";
  10. }  

  11. myTest();

  12. echo "<p>测试函数外变量:<p>";
  13. echo "变量 x 为: $x";
  14. echo "<br>";
  15. echo "变量 y 为: $y";
  16. ?>
复制


在以上实例中 myTest() 函数定义了 $x 和 $y 变量。 $x 变量在函数外声明,所以它是全局变量 , $y 变量在函数内声明,所以它是局部变量。
当我们调用myTest()函数并输出两个变量的值时, 函数将会输出局部变量 $y 的值,但是不能输出 $x 的值,因为 $x 变量在函数外定义,无法在函数内使用。如果要在一个函数中访问一个全局变量,需要使用 global 关键字。
然后我们在myTest()函数外输出两个变量的值,函数将会输出全局部变量 $x 的值,但是不能输出 $y 的值,因为 $y 变量在函数中定义,属于局部变量。

小技巧:你可以在不同函数中使用相同的变量名称,因为这些函数内定义的变量名是局部变量,只作用于该函数内。
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.
点评
B Color Smilies

您还可以输入:个字符
X

X

TOP

PHP global 关键字

global 关键字用于函数内访问全局变量。
在函数内调用函数外定义的全局变量,我们需要在函数中的变量前加上 global 关键字:

  1. <?php
  2. $x=5;
  3. $y=10;

  4. function myTest()
  5. {
  6.     global $x,$y;
  7.     $y=$x+$y;
  8. }

  9. myTest();
  10. echo $y; // 输出 15
  11. ?>
复制


PHP 将所有的全局变量存储在一个名为 $GLOBALS[index] 的数组中,其中 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。

故此,上面的实例可以写成这样:

  1. <?php
  2. $x=5;
  3. $y=10;

  4. function myTest()
  5. {
  6.     $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
  7. }

  8. myTest();
  9. echo $y;
  10. ?>
复制
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.
点评
B Color Smilies

您还可以输入:个字符
X

X

TOP

Static 作用域

当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。
要做到这一点,请在您第一次声明变量时使用 static 关键字:
  1. <?php
  2. function myTest()
  3. {
  4.     static $x=0;
  5.     echo $x;
  6.     $x++;
  7. }

  8. myTest();
  9. myTest();
  10. myTest();
  11. ?>
复制


然后,每次调用该函数时,该变量将会保留着函数前一次被调用时的值。
注意:该变量仍然是函数的局部变量。
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.

获得 小赌神卡 一张

卡片说明:flashroad照顾了失踪的小狗,主人付出了8金钱以作感谢

卡片效果:+8

点评
B Color Smilies

您还可以输入:个字符
X

X

TOP

参数作用域

参数是与函数配套使用的,参数离不开函数。
参数其实是一种局部变量,通过调用代码将值传递给函数的局部变量。

参数是在参数列表中声明的,作为函数声明的一部分:
  1. <?php
  2. function myTest($x)
  3. {
  4.     echo $x;
  5. }
  6. myTest(5);
  7. ?>
复制
我们将在 PHP 函数 章节对它做更详细的讨论
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.
点评
B Color Smilies

您还可以输入:个字符
X

X

TOP

 

B Color Image Link Quote Code Smilies
高级模式 | 发新话题

您需要登录后才可以回帖 登录|立即注册

快速
返回顶部
返回首页