博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php函数
阅读量:5050 次
发布时间:2019-06-12

本文共 2463 字,大约阅读时间需要 8 分钟。

函数不区分大小写;

函数参数传递方式:值传递,引用传递(定义的时候使用&,调用的时候就不需要添加了)

//关于函数参数的传递    //值传递    function foo(&$x){        $x = $x + 50;    }    $x = 200;    foo($x);    echo $x;  //结果是250

 

关于可变参数:php中没有函数重载,可变参数是指参数的个数是变化的。

func_num_args()//获取参数的个数;

func_get_args()//获取所有的参数,返回的是一个数组

func_get_arr(int)//获取数组中执行下边的数

 

 

//对若干个数求和,比如add(2,3),add(2,3,4),add(2,3,4,5,6,7)    //可变参数,指的是参数的个数是变化的    //func_num_args():获取参数的个数    //func_get_args():获取所有的参数,返回的是一个数组    //func_get_arg(int):获取数组中指定下标的数    function add(){        //测试传参个数        //echo func_num_args();          //测试获取所有的参数        //print_r(func_get_args());        //测试一下具体获取某一个        //echo func_get_arg(3);        $sum = 0;        for($i = 0; $i < func_num_args(); $i++){            $sum += func_get_arg($i);        }        return $sum;    }    //echo add(2,3,4,5,6,7);    echo add(2,3,4);

 

 

递归:

递归需要注意细节:

1、递归不能无限制的调用下去,因为栈空间是有限的,应有停止条件。

2、递归中必须有完成终极任务的语句序列,使函数有意义,比如 return 1;

3、递归函数当然要有递归语句了;

4、递归应先测试条件,再递归调用;

递归的优缺点:

  优点:结构清晰,可读性强;

  缺点:不好理解,运行的效率低,占用空间和时间都比非递归函数多

 

0){ test($n-1); }else{ echo "----- "; } echo $n." "; } //结果是10 9 8 7 6 5 4 3 2 1 0 ----- 0 1 2 3 4 5 6 7 8 9 10?>

 

//简单但容易出错的笔试题    demo(10);    function demo($n){        if($n > 0){                    demo((int)($n/2));        }        echo $n."
"; } //输出结果是:0,1 2 5 10
0){ return $n*fac($n -1); }else{ return 1; } } echo fac(7);?>
"; echo "年龄:".$age."
"; echo "性别:".$gender."
"; echo "国籍:".$nationality; } show("zhangsan",31,"女");?>

内存空间分配如下:

 栈,通常存放局部变量(函数)

堆,动态申请的空间,new

函数的调用机制:

 

函数的调用和栈息息相关。

 

栈是内存的存储空间的一种分配方式,物理上。 栈是一种数据结构,后进先出。

 

函数的调用实际上就是入栈和出栈的过程。

 

函数的步骤:

 

① 建立被调函数的栈空间,其大小由函数体定义的数据量来决定。

 

② 保护调用函数的运行状态和返回地址

 

③ 传递参数

 

④ 将控制权转交给被调函数

 

⑤ 函数运行完成后,复制返回值到函数数据块底部

 

⑥ 恢复调用函数的运行状态

 

⑦ 返回调用函数

 

 静态变量static

php中静态属性只能被初始化为一个字符值或常量,不能使用表达式

静态变量存放在内存中静态变量的存储区域,只在第一次赋值的时候进行初始化。

 

 

一个经典面试题:

include、require、include_once、require_once之间的区别?

1、require要求更加严格,如果程序出错(包含文件不存在或者无法访问的时候)会停止程序的执行;

  include程序出错,输出错误,会继续执行后面的代码;

  这两种结构除了在如何处理失败之外完全一样,include()产生一个警告,而require()则导致一个致命                错误;

2、include和include_once之间的区别

  使用include_once如果前面已经包含过,则不再包含,如果使用include重复包含的时候会出错;

  Requirerequire_once之间的区别和Includeinclude_once相同。

有四个,到底用哪一个?

  require_once,

  严格检查,如果包含的文件不存在或无法访问,则会报错,停止程序的运行,同时避免了重复包含的      问题。性能方面会有一丁点的影响,因为做了额外的操作(检测是否已经包含过了)。

 

  在php中全局变量时用global来修饰;

转载于:https://www.cnblogs.com/RightDear/archive/2012/11/05/2754434.html

你可能感兴趣的文章
linux调度器系列
查看>>
mysqladmin
查看>>
解决 No Entity Framework provider found for the ADO.NET provider
查看>>
SVN服务器搭建和使用(三)(转载)
查看>>
Android 自定义View (三) 圆环交替 等待效果
查看>>
设置虚拟机虚拟机中fedora上网配置-bridge连接方式(图解)
查看>>
HEVC播放器出炉,迅雷看看支持H.265
查看>>
[置顶] Android仿人人客户端(v5.7.1)——人人授权访问界面
查看>>
Eclipse 调试的时候Tomcat报错启动不了
查看>>
【安卓5】高级控件——拖动条SeekBar
查看>>
ES6内置方法find 和 filter的区别在哪
查看>>
Android入门之文件系统操作(二)文件操作相关指令
查看>>
Android实现 ScrollView + ListView无滚动条滚动
查看>>
Swift 中的指针使用
查看>>
Swift - 使用闭包筛选过滤数据元素
查看>>
alue of type java.lang.String cannot be converted to JSONObject
查看>>
搜索引擎选择: Elasticsearch与Solr
查看>>
JAVA设计模式之简单工厂模式与工厂方法模式
查看>>
③面向对象程序设计——封装
查看>>
【19】AngularJS 应用
查看>>