当调用函数的时候,
程序的执行权 进入到 函数内部.
当函数语句运行完之后,执行权就交回.
或者是碰到 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'];
浙公网安备 33010602011771号