您的位置:首页 > 编程语言 > PHP开发

php基础学习day2

2017-09-08 16:29 260 查看
函数的深入理解:

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.

这就是值传递和地址传递的区别。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  PHP 函数栈 思考