PHP基础--函数

来源:互联网 发布:感人的故事 知乎 编辑:程序博客网 时间:2024/04/28 03:00

函数定义形式:

function 函数名(形参1,形参2,...){
函数体;
}

函数调用形式:

1,没有返回值的函数,则调用语句是独立的语句

函数名(实参1,实参2...);

2,有返回值的函数,则调用语句

函数参数问题:

1,在调用时有形式参数
(1)形参一定是一个变量名
(2)该变量名只能是在该函数中有效的变量名
(3)而且只在该函数调用并执行时有效,函数结束,通常这些变量也就“销毁”
2,在调用时,有实际参数

定义形式:function 函数名(形参1,形参2...){...}调用形式:函数名(实参1,实参2...);

默认值参数:定义一个函数的时候,在形式参数的位置,可以给形式参数设定“默认值”

function getArea($r,$PI=3.14){...}//默认值参数需要放在“右边”

注:
1.默认值参数不能是对象或资源类型
2.默认值只能是常量表达式,或常量,不能是变量

function f1($v1=3)  function f1($v2=__LINE__) //正确function f1($v1=3+1)  function f1($v1=$m) //错误

函数的参数传值:

1.值传递
2.引用传递:引用传递 的形参(实参)在函数内部改变其值,在函数外面的实参也会相应修改
注:如果某个形参设定为引用传递,此时,实参只能使用变量,否则出现语法错误

3个系统函数:

func_get_args();//获得一个函数所接收到的所有是参数据,并结果是一个数组func_get_arg(n);//获得一个函数所接收到的第n个实参数据(n从0开始)func_num_args();//获得一个函数所接收到的的所有实参数据的个数

函数的返回值:

return
也可以用“引用传递”的方式返回

定义函数:function &函数名(形参1,形参2,...){            $result=0;            ...            return $result;        }调用函数:$v1=&函数名(实参1,实参2,...);

函数的其他形式:

1.可变函数:
$str="f1";
$v1=$str(3,4);

2.匿名函数:

表现1:$f1=function(){函数体;};表现2:调用其他函数2(匿名函数,实参1,实参2...);

注:能够使用匿名函数当作实参的函数并不多!
其中一个常见的是:call_user_func_array(匿名函数,数组);
含义:将该数组的每一项当作该匿名函数的若干个实参,传递到该匿名函数中,并执行该匿名函数,并可以从该匿名函数中返回数据

变量的作用域:

1.局部作用域:只能在所定义的函数范围内使用
2.全局作用域:在函数的“外部”范围内使用
PHP中,局部和全局作用域是不重叠的
JS中全局作用域包括局部作用域
3.超全局:在函数内外都可以使用
4.静态局部作用域:数据能够在函数退出后仍然保持不丢失

局部访问全局变量的特定方法:

1.在局部范围内:global $变量名;
2.在函数中(局部范围):$GLOBALS['v1'];
注:通过$GLOBALS操作全局变量,是直接操作(而不是引用操作),即如果unset该对应元素,则全局变量对应变量也会被unset
实际上可以:$GLOBALS['v1_abc']=20;//类似局部使用全局

全局访问局部变量的特定语句:

1.通过引用传递的方式向形参传递一个引用实参变量

$v1=10;function f1(&$p1,$p2){...}$v2=f1($v1,10);

2.使用函数的引用返回形式
3.函数中使用global关键字来首次引用一个全局变量,则函数结束后在全局范围就可以使用该变量了

有关函数的系统函数:

function_exists();//判断某个函数是否被定义过,返回布尔值func_get_arg(n);func_get_args();func_num_args();

有关函数的编程思想:

1.递归函数:

例:计算n的阶乘function jiecheng($n){    if($n==1){        return 1;    }    $result=jiecheng($n-1)*$n;    return $result;}$v1=jiecheng(6);echo "v1=$v1";

2.递推思想(迭代思想)

例:求斐波那契数列function fbnq($n){    $n1=1;    $n2=1;    $result=0;    for($i=3;$i<=$n;$i++){        $result=$n1+$n2;        $n1=$n2;        $n2=$result;    }    return $result;}$v2=fbnq(5);echo "斐波那契数列第5项:".$v2;echo "斐波那契数列第12项:".fbnq(12);
原创粉丝点击