腺翔亢雇趁轰寥经劲埂渐劝洼
作用域只有三个:
1.全局:函数之外创建,仅在当前脚本除函数之外的地方使用;
2.局部:函数内部创建,仅能在函数中使用,外部不可访问;
3.静态:函数内部创建,仅在函数中使用,函数执行完成它的值不丢失;
什么叫函数?
函数:是脚本中具有特定功能的代码段,可以重复调用
1.基本语法:
1.1 函数声明: function funcnName($args){ #code…}
1.2 函数表达式(匿名函数): $funcName = function ($ages){ #code…}
2.调用:
2.1 按名调用: funcName($args) / $funcName($args)
2.2 自调用: 声明与调用同时完成
(function (args){ #code…})()
实例:
新建demo4.php
代码:
<?php echo "<h2>函数的作用域</h2>"; echo "<hr color='red'>"; $siteName="萌面人资料铺"; function hello() { //函数内部不能直接访问全局变量$siteName $userName='mengmianren'; return '欢迎来到'.$siteName.'我是:'.$userName; } echo hello();//函数内部不能直接访问全局变量$siteName echo $userName;//在函数外部也不能访问函数内部的变量
执行:
错误原因:函数内部不能直接访问全局变量$siteName 在函数外部也不能访问函数内部的变量
使用global来使用全局变量
<?php echo "<h2>函数的作用域</h2>"; echo "<hr color='red'>"; $siteName="萌面人资料铺"; function hello() { global $siteName; $userName='mengmianren'; return '欢迎来到'.$siteName.',我是:'.$userName; } echo hello();
执行:
当声明全局变量时,php会自动生成一个超全局数组$GLOBALS[‘siteName’]
可以通过如下方式使用该数组:
<?php echo "<h2>函数的作用域</h2>"; echo "<hr color='red'>"; $siteName="萌面人资料铺"; function hello() { $userName='mengmianren'; return '欢迎来到'.$GLOBALS['siteName'].',我是:'.$userName; } echo hello();
执行:
静态变量,必须且仅能在函数中声明和使用
实例:
<?php function mystatic() { $num=1; return '第'.$num.'次调用结果为:'.$num++.'<br>'; } echo mystatic(); echo mystatic(); echo mystatic(); echo mystatic(); echo mystatic();
执行:
每次调用mystatic(),$num都被重新赋值为1,如果不想每次都被重新赋值,想要使用上一次函数调用的结果,应该将$num变为静态
<?php function mystatic() { static $num=1; return '第'.$num.'次调用结果为:'.$num++.'<br>'; } echo mystatic(); echo mystatic(); echo mystatic(); echo mystatic(); echo mystatic();
执行:
此时$num变为了静态变量,只有在函数第一次调用时被赋值。后面就不再赋值了。
超全局变量:$_SERVER,$_COOKIE,$_SESSION,$_GET,$_POST,$_REQUEST
$_REQUEST=$_GET+$_POST+$COOKIE
1. 属预定义变量,全部是数组,拿来就用,不需要声明;
2. 跨作用域,在全局和局部(函数内部)都可以直接使用;
3. 跨作用域不是跨脚本,所谓超全局,包括全局,都是指在当前脚本文件中。
可以在全局直接引用超全局变量
代码:
<?php echo "我的姓名是:".$_GET['name'];
执行:
在浏览器地址栏输入name=mengmianren
在函数中引用超全局变量
代码:
<?php function sayname() { return "我的姓名是:".$_GET['name']; } echo sayname();
在浏览器地址栏输入?name=萌面人
注意:超全局变量是系统预定义的,在用户创建的每一个PHP文件中,都会自动创建,不用用户手动创建。
襄融谰犯细锑姆雹柿簿冉奈垒