php中关于函数的小知识
2015-12-12 16:37
501 查看
在php中 函数的声明发生在语言的编译阶段,而不是执行阶段
在编译阶段,内存中会创建用户动态代码区 该区域保存着可执行代码(包括函数)而在执行阶段(调用函数) 内存会为函数创建执行区域空间,该空间为栈区 保存着函数在执行过程中所用的变量(函数的形参和函数体内定义的变量),当函数运行完毕时,在栈区开辟的运行空间随之消失。函数每次调用都会形成一个栈空间
php中的函数名大小写不敏感 通常使用驼峰法编写函数名
可变函数:函数的函数名可以由一个变量来充当 ,例如
但是,当形参数量大于实参数量时,函数是可以执行的,但是会出现警告信息(找不到参数)当实参数量大于形参数量的时候,不会影响函数的正常运行
有时,可利用函数实参数量大于形参数量,可以实现函数功能上的重载
例如要实现n数的累加和
在php中 存在两种作用域,即全局作用域(函数外部)和局部作用域(函数内部),而且作用域不重叠(作用域不能互相访问,在函数内不能访问全局变量,在全局中不能访问函数内的变量)
在php中存在9大超全局变量,超全局变量即在全局可用,又在局部可用
对于用户脚本来说,不能定义一个超全局变量的数据,但可以通过将数据作为超全局变量的元素形式将数据变为超全局的,GLOBALS全局数据变量就是专门讲用户的全局数据变为超全局数据的。其实每个PHP的全局变量会自动变为$GLOBALS的一个元素。
如果需要在局部范围访问全局变量,可将局部变量作为超全局变量的数据
在编译阶段,内存中会创建用户动态代码区 该区域保存着可执行代码(包括函数)而在执行阶段(调用函数) 内存会为函数创建执行区域空间,该空间为栈区 保存着函数在执行过程中所用的变量(函数的形参和函数体内定义的变量),当函数运行完毕时,在栈区开辟的运行空间随之消失。函数每次调用都会形成一个栈空间
php中的函数名大小写不敏感 通常使用驼峰法编写函数名
可变函数:函数的函数名可以由一个变量来充当 ,例如
function star(){ var_dump("star") } $func_name='star'; $func_name();//输出star
1 函数传参问题
(1) 引用传递方法:在形参前面加入地址符(&)
function star(&$para1,&$para2){ //函数体 }有时 为了保证函数在用户传递的参数不正确或者参数存在经常性的操作时,需要为函数的某些参数设置默认值。例如
function f3($p1,$p2=30){ echo $p1+$p2; } f3(10);//40 f3(10,20);//30
(2 )形参与实参的数量问题
通常形参和实参的数量应该一致但是,当形参数量大于实参数量时,函数是可以执行的,但是会出现警告信息(找不到参数)当实参数量大于形参数量的时候,不会影响函数的正常运行
有时,可利用函数实参数量大于形参数量,可以实现函数功能上的重载
例如要实现n数的累加和
function sumAll(){ // 利用php内置函数实现实参的读取 实现功能上的重载 $args=func_get_args(); $sum=0; for($i=0,$len=count($args);$i<$len;$i++){ $sum+=$args[$i]; } echo $sum; } sumAll(10,20);//30
2 作用域问题
变量只有存在函数时才有作用域 而且只有变量才有作用域问题,常量不存在作用域的问题在php中 存在两种作用域,即全局作用域(函数外部)和局部作用域(函数内部),而且作用域不重叠(作用域不能互相访问,在函数内不能访问全局变量,在全局中不能访问函数内的变量)
在php中存在9大超全局变量,超全局变量即在全局可用,又在局部可用
对于用户脚本来说,不能定义一个超全局变量的数据,但可以通过将数据作为超全局变量的元素形式将数据变为超全局的,GLOBALS全局数据变量就是专门讲用户的全局数据变为超全局数据的。其实每个PHP的全局变量会自动变为$GLOBALS的一个元素。
$name="php"; var_dump($GLOBALS['name']);//php $GLOBALS["name"]="javascript"; var_dump($name);//javascript
如果需要在局部范围访问全局变量,可将局部变量作为超全局变量的数据
function test1(){ var_dump($GLOBALS["name"]); } test1();<span style="font-family: Arial, Helvetica, sans-serif;">//javascript</span>
3 静态局部变量
静态局部变量保存在内存中的静态区(保存着静态变量和全局变量)可以保证变量的作用域为所有的该环境的执行周期内 静态变量使用static声明即可function test2(){ static $count=0; echo $count++;//计函数被调用的次数 } test2();//1 test2();//2
相关文章推荐
- thinkphp中的类库与引用import引入机制
- PHP扩展:第一个程序
- PHP 命名空间详解 (以ThinkPHP举例)
- var_dump与var_export区别
- thinkphp遇到的小问题,js文件中U方法不被解析
- #学习笔记#(13)仿 kugou-logo-phptoshop
- Laravel中的依赖注入之IoC容器应用详解
- PHP中exit,exit(0),exit(1),exit('0'),exit('1'),die,return的区别
- 获取汉字首字母(php,java)
- 常用PHP设计模式
- ucenter单点登录
- H.264码流结构及码流封装成RTP包分析
- php创建多级目录
- PHP级联删除文件
- PHP 文件浏览器
- Brocade交换机和Cisco交换机STP/RSTP互操作
- PHP 模拟登陆实例
- php pthreads 获取货运号代码实例
- PHP serialize & JSON 解析
- SRM675(div2) Level Two ShortestPathWithMagic