一:PHP中的函数
1.函数的基本语法
函数,英文名为function ,而function也有功能的含义,可以理解为函数就是功能,调用一个函数就是实现一个功能,函数的两个特点,可以随时调用,可以重复调用,
对于函数,我们一般分为两大类,自定义函数和系统函数
2.自定义函数
php提供了很多功能强大的函数,但仍然不能满足程序猿的一些需求,这时候就需要程序猿根据自己的需求来创建函数,即自定义函数,定义格式如下
function 函数名([参数名1[=值1], 参数名2[=值2], 参数名n[=值n]]) { // 函数中的功能体 // return 返回值 }
注意:1.这里的参数其实就是变量
2.定义的函数名并不区分大小写,这一点很多人都会忘记
3.函数可以多次调用,但是不能多次定义同名函数
4.函数名只能是字母,数字,下划线的组合
5.函数的参数可以设置默认值,如下:,此时就算调用时不传参也不会报错
function test( $arg = 10){ echo $arg; }
6.在代码层面可以先调用,在后面再创建该函数
3.回调函数
回调函数其实就是在一个函数的参数位置传入另外一个函数,配合第一个参数的执行,这样说着有点抽象,下面用php中文网的代码例子给你们看看
<?php function woziji($one,$two,$func){ //我规定:检查$func是否是函数,如果不是函数停止执行本段代码,返回false if(!is_callable($func)){ return false; } //我把$one、$two相加,再把$one和$two传入$func这个函数中处理一次 echo $one + $two + $func($one,$two); } //我们定义几个函数试试 function plusx2( $foo , $bar){ $result = ($foo+$bar)*2; return $result; } function jian( $x , $y ){ $result = $x - $y; return $result; } //调用一下函数,woziji,向里面传入参数试试 echo woziji(20,10,'plusx2') .'<br>'; // 90 //将plusx2改成jian试试结果 echo woziji(20,10,'jian'); // 40 ?>
就是调用函数时在要填入变量的位置填入函数作为变量
注意:这里也可以自己调用自己,在递归中常用
4.匿名函数
匿名函数就比较简单了,就是没有函数名的函数,匿名函数也有两种常用的格式,下面我们来介绍一下
1.变量函数式的匿名函数
例子如下:
<?php $greet = function($name) { echo $name.',你好'; }; $greet('明天'); ?>
调用时直接用定义的greet变量加上()即可使用,也可以理解为将这个变量当做了函数名
2.回调式的匿名函数
这个就更简单,当我们编写自定义函数时,不想专门去写一个回调函数,就可以在调用回调函数的位置用匿名函数代替,如下
woziji(20,30,function( $foo , $bar){ $result = ($foo+$bar)*2; return $result; } );
如上,本来woziji函数的第三个参数应该是我们定义好的函数名,但是我们不想再另外定义,就可以在这里使用匿名函数
5.内部函数
内部函数顾名思义就是在函数内部又重新定义了一个函数,需要注意的只有两点
内部函数名,不能是已存在的函数名
假设在函数a里面定义了一个内部函数,不能调用两次函数a。
要调用内部函数的时候要先调用外面的函数
单独调用外部函数时,不会执行内部函数
6. 变量作用域
我们几天前就已经接触了变量这个概念,但是变量也有自己作用的范围,不在其范围内便无法使用该变量,比较常见的就是函数内定义的变量跟函数外没有任何关系,那如果我想在函数外调用函数内的变量,或者反过来,就没有办法了吗?
这里就要讲到我们的$GLOBALS和GLOBAL了,先讲$globals,这里给出几个例子
1.$GLOBAL
<?php //函数内读取外部变量 $one = 10; function demo(){ $two = 100; $result = $two + $GLOBALS['one']; return $result; } //你会发现结果变成了110 //同理,不仅可以在函数内调用外界变量,修改或者创建外部变量也可以 //注意:创建的全局变量需要先调用函数才可以在外界使用 echo demo(); ?>
2.GLOBAL
再讲一下GLOBAL ,用法也很简单,就是在global的后面跟上变量名,这个变量就可以在程序的任何地方使用了,就像下面这样
global $a , $b;
7.参数的引用
例如$a=&$b,这是变量的引用,让他们指向同一个存储空间,此时两者变化同步,而参数的引用也是这样,将 形参和实参指向同一存储空间,两个的值此时也会同步变化
<?php $foo = 100; //注意:在$n前面加上了&符 function demo(&$n){ $n = 10; return $n + $n; } echo demo($foo).'<br />'; //你会发生$foo的值变为了10 echo $foo; ?>
大致意思就是通过&将$n指向$foo所在的存储空间,所以这里改变$n的值,$foo也会同步改变
8.递归函数
这里的递归函数跟前面的回调函数有异曲同工之妙,回调函数是在函数内调用其他函数,但是丢鬼函数实在函数里调用自身,即自己调用自己,下面有一个例子
<?php $n = 2; function dg( $n ){ echo $n.'<br />'; $n = $n - 1; if($n > 0){ //在函数体内调用了dg自己哟 dg($n); }else{ echo '--------------'; } echo '我是最后一个哦!' . $n . '<br />'; } dg($n); ?>
这也是个很简单的东西,大致就是一个函数会根据你传入的值做不同的处理,不断调用自身并执行函数体,直到传入的值不适合在这个函数运行,就退出 ,有些代码基础的应该很容易懂,看不懂的可以下载后运行试试
9.静态变量
静态变量主要为了解决一个问题——某个函数被调用了多少次?
简单的说就是在函数里面定义一个新变量,并给他一个值,函数每次被调用,变量就会做对应的改变,比如定义了一个$a=0,函数每次调用都执行$a++,最后得到的$a的值就是函数的调用次数
10.系统函数
上面讲的都根据我们的需求自定义功能的函数,系统函数就是系统已经定义好了,功能也固定,需要时候直接调用就可以了,由于太多了,就不一个一个讲了,这里是php中文网整理的常用系统函数
还是比较推荐大家去看一看