当调用函数的时候,
程序的执行权 进入到 函数内部.

当函数语句运行完之后,执行权就交回.
或者是碰到 return 之后,函数也会交回执行权.

调用函数的返回值, 即是return 的值.
如果没有return语句,或者 "return;" 则返回值是 NULL

一般情况下,页面内声明的"普通全局变量", 在函数内访问不到.

function foo(&$num) {  // 此处,即是指,传参,不再是传实参的值,而是传实参的地址

    $num += 5; }

foo($age);

echo $age,'<br />';

/**/ function foo(&$num) {

    $num = &$age;  // 此时,函数内部的$num,指向外部的一个全局变量的地址.

    $num += 5;     // 因此,num变,影响了外部了的$age变. }

echo $age,'<br />'; // $age受到了foo函数的影响,

/***

 

同时,我们也可以看到:

函数局部内的变量 ,和全局的变量, 并不是水火不容,谁都不机会碰到谁的.

是有机会相互影响的, 比如上面的 引用传参.

以及: 超级全局变量.

 

但是: 常量 在函数能访问到 而且,还有一类变量 ----- 超级变局变量.

超级全局变量,非常猛, 在页面的任意一处, 无论是多深层的函数内,还是以后的对象的方法体内.都可以直接访问到.

九大超级变局变量[注意,全大写]

$_GET   // 地址栏的参数

$_POST  // 接POST型的表单参数经(比如,用户注册时的内容,往往用$_POST来接)

$_REQUEST // 默认情况下包含了 $_GET,$_POST 和 $_COOKIE 的数组,即$_REQUEST是前3者一个并集. 比如不想区分 $_GET,$_POST,可以用$_REQUEST来代替

$_FILES  // 文件上传时学

$_COOKIE   // $_SESSION  // 用户登陆时学

$_ENV $_SERVER   // 服务器还有访客的一些信息

$GLOBALS  // 所有变量的一个注册表

 

$_SERVER,放置的是 运行脚本的当前服务器信息,和当前运行的环境信息

$GLOBALS是页面内 所有全局变量的一个"名单",在GLOBALS里,
// 你能找到你声明过的所有变量

而$GLOBALS又是超变局的,
// 这意味着: 我们通过$BLOBALS可以操作普通的全局变量.

 

函数 和 全局变量, 并不是水火不容,

1: 通过引用传参,能影响全局变量

2: 通过global声明, 也能直接使用外部的变量 (不推荐,好多公司明确禁止使用global,自己想想危害)

3: 直接操作超级变局变量.

echo '你来自于',$_SERVER['REMOTE_ADDR'],'<br />';

echo '你的浏览器信息是',$_SERVER['HTTP_USER_AGENT'];