zoukankan      html  css  js  c++  java
  • php笔记之函数

    函数初步

    基本概念

    函数是模块化程序的产物,在实际开发过程中,我们会将一个项目划分为各个大的功能模块,通时将大的功能模块发为小的功能,在使用函数这个最小的功能(一个动作)实现

    从代码上看,函数就是使用{},将完成摸个功能的代码括起来(封装),在使用function关键字,为这段代码设置一个名字,这个名字就是函数名,函数名后必须有(),这个()表示函数只能被调用

    申明语法

    语法:

    function funName(参数列表){
          函数体
          【return 值】          
    }

    示例:

     调用语法:

    语法:

    funName(实参列表);

    示例:

     函数名

    php函数名是不区分大小写,函数名的命名规则和变量名相同,只能包含字母、数字、下划线。而且以字母下划线开头

    可变函数

    如果$a的值是另一个变量的名,那么可以适应$$a来访问另一个变量的值

    如果$a变量的值是另一个函数名,那么可以使用这个变量来访问函数

    示例:

     示例:

     函数体

    完成某一段功能的代码段

    return语句

    在我们函数完成一些功能时,又是会将函数计算的数据,传递出来。此时可以使用return

    提示:

    程序是用于处理西湖局,函数所处理的数据有两个方向

    其一,从内而外使用return

    其二,从外而内 使用实参和形参

    函数内部可以有多个return 只要遇到一个return就会中断函数的执行

    函数内也可以省略return语句

    匿名函数

    没有名字的函数就是匿名函数,业务称之为闭包函数

    提示:

    js中的函数可以自调用,但是php中的函数没有办法自调用

    php中的匿名函数,可以赋值一个变量,还可以用于某个函数的参数

    示例:将匿名函数赋值给变量,通过这个变量可以调用匿名函数

     回调函数 callback

    我们定义一个函数很多的时候是为了自己使用,但是在开发过程中,我们在其他热的函数,或系统函数时,这些函数需要参数,而有些参数要求你传递的一个函数。作为传参的函数就是回调函数

    示例:

    匿名函数作为回调函数(参数)传递

     函数参数

    函数定义时的参数是形参

    形参是被动的接收数据

    形参是对内存有效,对于外部是不可见的

    示例:

     实参

    函数调用是的参数就是实参

    主动向函数内部传递实际的数据

    提示:

    形参余实参让函数更加具有通用性

    形参的默认值

    php中在定义函数时候可以为形参赋值一个值,这个值就是形参的默认值

    在调用函数时,如果没有为具有默认值的形参传递数据,那么形参使用的就是默认值,如果有为具有默认值的形参传递数据,那么这个形参使用实际传递过来的数据,一般具有默认值的形参位于,形参列表的最后

    示例:

     形参的引用传值

    php中函数的实参与形参之间也是一种赋值方法,默认是

     

     php中可以下形参前加&符号,将实参和形参之间默认的复制传值,更改为引用传值

     伪类型(函数)

    PHP语言本身提供了8种数据类型。但是在使用手册中我们会遇到另外几中:

           mixed           表示类型不确定

           callback        表示函数

           scalar           如果是int、float、string、bool

     相关函数(系统函数)

    func_get_args();

    用于获取实参,并以数组的形式返回

    func_get_arg(inf);

    用于获取ind下标指定的实参

    func_num_args();

    用于获取实参的个数

    示例:

     示例:应用

     示例:

     

    说明:

           …$变量名           用于将实参以数组元素的形式保存在这个变量中

    函数运行的内存原理

    作用域

    在php中函数是用于封装某一功能的代码段,函数在对代码进行封装会有一些影响,php中分为两种作用域,全局作用域和局部作用域

    全局作用域和全局作用域

    在函数外部的定义的变量,其作用域就是群居作用域,变量就是全局变量

    示例:

     

     局部作用域和局部变量

     在函数内部定义的变量,器作用域就是局部作用域,这个变量就是局部变量

    示例:

     提示:默认php中有很清晰的作用域,外部只能访问外部的,内部只能访问内部的

    global关键字

    虽然php默认作用很清晰,但是有时确定会外部或内部访问外部。如何解决?

    通过默认参数的传址方式

    在形参前使用&,可以达到内部访问外部

     

    $GLOBALS

    $_GET$_POST...$GLOBALS,超全局变量

     示例:

     提示:

    以上两种变通的方式都只是实现了内部访问外部

    global关键字

    语法:

    global  变量名

    说明:

    在函数内部建议一个与函数外部同名的变量的引用,如果外部有这样的同名变量,会在外部创建一个同名的变量

     常量的作用域

    常量没有作用域限制,一个脚本的常量,在任何位置都可以访问

    预定义变量(超全局变量)

    超全局变量也不受作用域的限制

    变量的生命周期

    作用域和生命周期

    作用域表示的是一个变量的作用空间范围

    生命周期表示的是一个变量的作用时间范围

    全局变量的生命周期

    全局变量 生命周期是从脚本执行到脚本局结束

    局部变量的生命周期

    局部变量 生命周期是从函数执行开始到函数执行结束

    静态变量

    在函数内部使用static申明的变量,就是静态变量

    示例:

     原理

    静态变量在函数多次被调用时,只会被初始化一次,并且静态变量的值并不会随着函数执行后空间的销毁为而被销毁

    在函数下一次调用时,任然可以访问其值

     提示:

    静态变量的使用场景,如果想在同一个函数多次调用时,共享一份数据,那么就使用静态变量

    系统函数

    日期时间函数

    time()

    说明:

    用于获取当前时间的时间戳,单位是秒,时间戳就是从时间原点至现在的一个秒数

    时间原点,计算机中规定从1970年1月1日0时0分0面那一刻为时间原点

     microtime();

    date();

    语法:

    date(format【,time】);

     说明:

    用于格式化时间信息

    time表示所要格式化的时间戳,如果省略表示对当前时间进行格式化

    format 用于格式化时间的字符串

    Y        表示4位的年份
    m           月份,有前导0
    d            表示,日期
    H            表示24小时机制的小时数
    i             表示分钟数
    s            表示秒数

    mktime()

    语法:

    mktime(时,分,秒,月,日,年);

    说明:

    用于获取指定时间的一个时间戳

     strtotime()

    语法:

    strtotime(string)

    说明:

    讲一个字符的形式描述的时间信息转换为时间戳

    递归

    函数自己调用自己就是递归

    递归函数解决问题的特点:完成一个需求有多个步骤,但完成每一步所要实现的代码是十分相似的,只有函数所传递的参数不同而已

    示例:

     The end

  • 相关阅读:
    基础数据类型补充
    编码转换
    is 和 == 的区别
    字典 dict
    列表与元组
    python基础第一节
    poll函数
    基本 TCP 的回射服务器
    文件IO
    base | AtomicIntegerT类
  • 原文地址:https://www.cnblogs.com/zhangcheng94/p/12202481.html
Copyright © 2011-2022 走看看