php基础学习day2
2017-09-08 16:29
260 查看
函数的深入理解:
1.按照函数的执行规则,只要一看到函数,php就会开辟一个新栈。
2.各个栈里面的变量都是相互独立的。
对函数栈的深入理解的例子:
比如这一段代码:
入口栈: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.
这就是值传递和地址传递的区别。
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.
这就是值传递和地址传递的区别。
相关文章推荐
- 2017-12-27php基础巩固学习第九天
- 【php】基础学习5
- PHP学习笔记之PHP基础(一)
- PHP学习笔记(四)--基础知识之常用运算符
- php基础教程之学习笔记1
- php学习基础
- php学习之基础记录(1)
- PHP学习笔记二(基础语法)
- PHP内核基础学习心得(一)
- nodejs学习笔记_nodejs和PHP在基础架构上的区别--共享状态的并发
- 【PHP】基础学习
- 广州传智播客PHP培训基础就业班都学习哪些课程
- PHP基础学习
- 2017-12-21php学习基础巩固第三天
- Oracle数据库基础学习DAY2
- 新手学习PHP的一些基础知识
- 学习php前需要掌握的基础知识
- php学习 基础二
- PHP入门基础学习篇(二)
- php基础学习