PHP函数原理理解详谈
作者:不要叫我阿哥
函数初解
function,是一种语法结构,将实现某一个功能的代码块(多行代码)封装到一个结构中实现代码的重复利用
函数定义语法:
关键点:function关键字,函数名,参数(形参和实参),函数体和返回值
基本语法:
function 函数名(参数){
//函数体
//返回值:return结果
}
定义函数的目的:实现代码的重复利用(简单明了)
函数的使用:通过访问函数的名字+();//如果函数在定义的过程中有参数,那么在调用的时候必须传入对应的参数
实例:
<?php function display(){//定义 echo'hello world'; } display();//调用 ?>
函数是在代码执行阶段碰到函数名字的时候才会调用,不是在编译阶段
函数的调用特点:只要系统在内存中能够找到就可以执行,也就是函数的调用可以在函数的定义之前
<?php display();//调用 function display(){//定义 echo'hello world'; } ?>
也就是这样
注意:函数也不可同名
参数详解
函数的参数分为两种:形参和实参
形参是实参的载体:实参在调用时需要传入函数内部参与计算,那么需要在函数内部去找到实际数据所在的位置才能找到数据本身;需要实际调用的时候,将数据以实参的形式传递给形参;给形参赋值,从而使得函数内部可以用到外部数据
<?php function add($arg1,$arg2){//芝士形参,使用逗号分隔开 echo $arg1+$arg2; } echo '<hr/>'; $arg1=10;$arg2=20; add($arg1,$arg2);//芝士传入的实参,可以是变量或者其他有值的表达式 ?>
也就是调用时传给函数的值是实参,函数会把实参赋值给形参,然后形参在函数中运行
函数外部定义的变量名字与函数定义的=形参名字冲突(重名)是没有任何关系的,也就是同名形参在不同函数可以重复使用
引用传递
有的时候,希望在函数内部拿到的外部数据,能够在函数内部改变,那么就需要明确告知函数(定义时),函数才会在调用的时候去主动获取外部数据的内存地址。
基本定义语法:
Function 函数名(形参1,$形参2){
//函数体
}
在调用的时候,必须给引用传值的参数位置传入实际参数苏,而且参数本身必须是变量。(变量才有指向的数值的内存地址)
<?php function display($a,&$b){ $a=$a*$a; $b=$b*$b; echo $a,'<br>',$b,'<br/>'; } $a=10;$b=5; display($a,$b); echo'<hr/>',$a,'<br/>',$b; ?>
由于$,所以函数在定义的时候,对应的b形参采用的是取地址,所以在实参传入之后,系统b取到了外部变量b的内存地址,a只去到了值,所以a只改变了函数内部自己,而b改变自己的同时也改变了外部
引用传值注意事项:在传入实参的时候,必须传入变量
函数体:函数内部(大括号{}里面)的所有代码都称之为函数体 函数返回值:
返回值:return,指的是将函数实现的结果,通过return关键字返回给函数外部(函数调用处);在php中所有的函数都有返回值(如果没有明确return使用,则系统默认返回null)
注意:函数的返回值可以是任意数据类型
return会直接结束函数,在return后的无法执行(函数内)
return还可以在文件中直接使用(不在函数里面);代表文件将结果return
后面跟的内容,转交给包含当前文件的位置.(通产在系统配置文件中使用较多)
在文件中也代表着终止文件后面的代码
静态变量
关键字:static,是在函数内部定义的变量,使用static关键字修饰,用来实现跨函数共享数据的变量,函数运行结束所有局部变量都会清空,如果重新运行一下函数,所有的局部变量又会重新初始化
基本语法:
function 函数名(){
//定义变量
static $变量名=值 //通常会在定义的时候就直接赋值
}
<?php function display(){ $local =1; static $count =1; echo $local++,$count++,'<br/>'; } display();//11 display();//12 display();//13 ?>
函数在调用的时候,会自动跳过static关键字这一行,也就是静态变量在使用后不会被释放
到此这篇关于PHP函数原理理解详谈的文章就介绍到这了,更多相关PHP函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!