1、定义

函数,就是将一些重复使用的功能写到一个独立的代码块中,在需要时单独使用。


2、函数创建语法

function fun_name($str1,$str2,...$strn){
    fun_body
}


3、传参

1>在调用函数时,需要向函数传递参数,被传入的参数为实参,函数定义的参数为形参

2>参数传递的方式有三种:

①值传递 :

将实参的值复制到形参中,在函数内部对形参进行操作,操作结果不影响实参。

<?php
    function add($num){
        $num=$num+1;
        echo "函数内部:\$num=".$num."<p>";
    }
    $num=1;
    add($num);
    echo "函数外部:\$num=".$num."<p>";
?>

运行结果:

函数内部:$num=2

函数外部:$num=1

②引用传递 :

将实参的内存地址传到形参中,函数的操作结果会影响实参。传递方式是在值传递基础上加上&即可(&加在形参上)。

<?php
    function add(&$num){
        $num=$num+1;
        echo "函数内部:\$num=".$num."<p>";
    }
    $num=1;
    add($num);
    echo "函数外部:\$num=".$num."<p>";
?>

运行结果:

函数内部:$num=2

函数外部:$num=2

③默认参数:

可选参数,可以指定某个参数为可选参数,将可选参数放在参数列表末尾,并且指定其默认值为空。

注意:

1>默认参数必须放在非默认参数的右侧,否则有可能出错

2>从PHP5开始,默认值也可以通过引用传递

<?php
    function price($price,$tax=""){
        $price=$price+($price*$tax);
        echo "价格:".$price."<p>";
    }
    price(100,0.25);
    price(100);
?>

运行结果:

价格:125

价格:100


4、函数返回值

1>函数将返回值传递给函数调用者的方式是使用return()。

2>return()将函数的值返回给函数的调用者,即将程序的控制权返回到调用者的作用域。

3>如果在全局作用域内使用renturn(),将终止脚本的执行。

4>return只能返回一个参数,要返回多个值,可以将多值打包成数组返回。

<?php
    function add($num){
        $num=$num+1;
        return $num;
    }
    echo "返回值是:".add(10);
?>

运行结果:

返回值是:11


5、变量函数

1>函数的调用是通过改变变量名来实现的,通过在变量名后面加上一对小括号,PHP将自动寻找与变量名相同的函数,并且执行它,如果找不到相对应的函数,就会报错,

2>这个技术可以用于实现回调函数和函数表等。

<?php
    function come(){
        echo '来了个人<p>';
    }
    function go($name='Jack'){
        echo $name.'走了<p>';  
    }
    function back($name){
        echo $name.'回来了<p>';
    }
    $fun='come';
    $fun();
    $fun='go';
    $fun("Jormin");
    $fun='back';
    $fun("Jormin");
?>

运行结果:

来了个人

Jormin走了

Jormin回来了


6、函数引用

1>对函数的引用,就是对函数返回结果的引用

2>使用方法是在方法名字前面加上&

3>和参数传递不同,引用函数必须在定义函数和调用函数的时候,前面都加上&,用来说明返回的是一个引用

<?php
    function come(){
        echo '来了个人<p>';
    }
    function go($name='Jack'){
        echo $name.'走了<p>';  
    }
    function back($name){
        echo $name.'回来了<p>';
    }
    $fun='come';
    $fun();
    $fun='go';
    $fun("Jormin");
    $fun='back';
    $fun("Jormin");
?>

运行结果:

result=原字符串

result=新字符串


7、取消引用

1>取消引用使用unset()函数。

2>unset()是断开了变量名和变量内容之间的绑定,而不是销毁变量内容。

<?php
    $str1='123';
    $str2=&$str1;
    echo 'str2='.$str2.'<p>';
    unset($str2);
    echo 'str2='.$str2.'<p>';
    echo 'str1='.$str1.'<p>';
?>

运行结果:

str2=123

str2=

str1=123