php基础学习day2

来源:互联网 发布:java web完整项目 编辑:程序博客网 时间:2024/06/17 15:24

函数的深入理解:

1.按照函数的执行规则,只要一看到函数,php就会开辟一个新栈。

2.各个栈里面的变量都是相互独立的。


函数栈的深入理解的例子

比如这一段代码:

<?php    function abc($n){        if($n>2){            abc(--$n);        }        echo "$n=".$n."<br>";    }    abc(4);?>

入口栈:abc(4):$n=4,abc(3),下面的echo还没有执行,这是第一层(执行完后,回到代码中的abc(4))

abc(3)开辟一个新栈,$n=3,abc(2),下面的echo还没有执行,这是第二层

abc(2)开辟一个新栈,$n=2,if语句不满足,因此echo(2),这是第三层,执行完后返回到第二层的abc(2)的地方


因此输出结果为:

$n=2

$n=2

$n=3


有编程基础的童鞋也能看出来,这个函数属于递归调用。


函数的基本结构:

funtion 函数名(参数列表){

函数体

return 语句

}

①参数列表可以使多个参数

一个自定义函数内的变量是局部的,函数外不生效

使用global全局变量的时候,可使用在函数外的变量,例如:global $n




PHP函数默认是值传递,如果要用引用传递的话加一个&:


下面我们来看这段代码:

<?php        $a = 1;        function abc($b){            $b = 111;            }        abc($a);        echo $a;?>

这样我们得到的结果,输出的变量a的值仍然为 1.


但是如果我们仅仅在参数中的$b加一个&,结果就会大有不同:

<?php        $a = 1;        function abc(&$b){            $b = 111;            }        abc($a);        echo $a;?>


这样我们得到的结果就是111.


这就是值传递和地址传递的区别。




原创粉丝点击