第四章 php函数(自定义函数、变量范围、参数传递,可变函数、递归函数、内置函数)

版权声明:转载请附上文章地址 https://blog.csdn.net/weixin_38134491/article/details/85224474

任何有效的php代码都可以作为函数体使用

//例子1
function add($a,$b){
    echo $a+$b;
}

add(10,20);  //php页面显示30


// 例子2
function add($a,$b){
    return $a+$b;   //return功能: 返回值给调用的地方,结束这个函数的运行
}

add(10,20);  //php页面什么都不显示,因为不是echo输出

查看一个变量的类型和值的方法:var_dump(add(10,20));    //这次查看 这个函数值的数据类型和值是多少

自定义函数

function 函数名(形式参数1,形参2...形参n){    ...  }

<?php
    $i=10; //全局变量
    function test(){
        global $i; //php中要用全局变量先要声明一下
        echo $i;
        $a=1;
    }

test();
?>

//函数内部有echo也没法在显示输出内容,必须要调用这个函数才能输出函数内部内容

定义常量: define('MY_NAME', 'ROBIN.FANG');  //后面必须加分号

echo MY_NAME;   //输出ROBIN.FANG

echo 'MY_NAME';  //输出MY_NAME

静态变量:静态变量是指在函数内部定义变量的时候使用static关键字来定义变量

特点:函数执行完毕后变量不会立即消失,当再次调用函数时静态变量保持的值依然存在,并且仅在第一次执行函数时会初始化值

function test(){
    static $a=10;//仅在第一次调用时执行
    echo ++$a;
}

test();       //11
echo'<br/>';
test();  //12

长久保存一般保存在硬盘或者数据库中

参数传递

  • 按值传递参数
function test($a){
    echo ++$a; //因为a++中的++是在输出后执行与printout一样原理,所以要用++a
}

$i=10;
test($i); //11
echo'<br/>'.$i; //10

 按值传递参数,我们在参数传递的时候默认的就是使用这个方式,对形式参数的操作根本不影响实际参数的值,两者没有联系 

  • 按引用传递参数
function test(&$a){
    echo ++$a;
}

$i=10;
test($i);  //11
echo'<br/>'.$i; //11

按引用传递参数,相当于形式参数和实际参数指的是同一个人,只是名字不一样,对形式参数的操作会直接影响到实际参数(变量)

  • 函数的默认参数
//例子1
function test($a=10){  //参数的默认值
    echo ++$a;
}
test(); //11


//例子2
function test($a=10){
    echo ++$a;
}
test(20); //21

可以给形式参数设置默认值,设置方法直接赋值即可,给形式参数加默认值的时候是从右往左加的,右边的必须有,才能给左边的加。

function test($a=20,$b=10){
    echo $a+$b;
}
test(); //可以两个都用默认值都不传
function test($a=20,$b=10){
    echo $a+$b;
}

test(25);  //35
//这里的25肯定是传给a的
  • 可变长度参数列表

php提供的可以直接使用

func_get_args();
func_get_arg();
func_num_args();

 这三个函数可以使用在我们定义函数内部,能够返回给我们关于此参数的信息

<?php
    function test(){
        var_dump(func_get_args()); //显示所有参数信息
        var_dunp(func_get_arg(4)); //查看第4个参数
        var_dump(func_num_args()); //返回参数个数
}

test(21,323232,4343,'单位取得','dmmcc');
?>

//var_dump()的功能和echo差不多都是输出的功能

“<br/>”在php网页中可以显示换行,但<br/>在zend studio中没法显示,必须在html文件中才能显示,php文件中用转义字符'\n'

定义的函数如果里面有echo输出值是不会在控制台显示的,需要调用这个函数才会显示

可变函数

function test(){
    echo '我是test函数';
}

$a='test'; //把函数名加上引号赋值给变量
$a(); //test()

可变函数不能用于例如 echo(),print(),unset()...

递归函数

在函数内部自己调用自己的函数

<?php
    function test($n){
        echo $n.'&nbsp;';

        if($n>0){
            test($n-1);
        }
        else{
            echo'<-->';
        }
        echo $n.'&nbsp';
    }

test(3);      // 3 2 1 0 <-->0 1 2 3

?>

递归函数:

  • 函数在被调用的执行过程中会在内存里分配空间用于存储临时数据,那么函数在执行过程中默认之间时没有联系的(除了静态变量、按引用传、全局变量),里面的变量默认都是全局变量,相互之间没有影响
  • 递归函数,在函数的内部需要适时结束函数运行的条件

内置函数

php的主要数据类型有 整形、浮点型、布尔型、字符串型

猜你喜欢

转载自blog.csdn.net/weixin_38134491/article/details/85224474