1. 定义
    1. 关键点:function关键字、函数名、参数、函数体、返回值
    2. 基本语法:function 函数名(【参数】){函数体 返回值:return}
    3. 在代码执行阶段,碰到函数名字时才会调用,不在编译阶段
    4. 调用特点:只要系统在内存中对应函数,可执行(调用在定义之前)
    5. 函数执行内存分析:
      1. 编译,将代码边成字节码到内存
      2. 执行
  2. 函数返回值
    1. 所有函数都有返回值
    2. 没有明确,默认返回null
    3. 返回值可是任意数据类型
  3. 函数命名规范
    1. 由字母、数字、下划线,不以数字开头
    2. 命名:
      1. 驼峰法:第一个小写,后面首字母大写
      2. 下划线:小写
    3. 在一个脚本周期中,不允许出现同名函数
  4. 形参
  5. 实参
    1. 形参是实参的载体,调用时以实参形式传递给形参,给形参赋值
    2. 在PHP中允许实参多余形参(个数):函数内部不用而已
    3. 在PHP中理论上形参个数没有限制(实际开发不会太多)
    4. 实参不能少于形参个数
  6. 默认值:default value形参的默认值
    1. 默认值的定义放在最右边(多个),不能左边有,右边没有(多个函数使用同样的形参名字不冲突)
    2. 实参在调用时会将值赋给形参,就是简单的值传递,形参与外部世纪传入的参数本身没有任何关联
    3. 希望在函数内部拿到的外部数据,能够在函数内部改变,就需明确告知函数,函数在调用时主动获取外部数据的内存地址
    4. 引用传值:基本定义法:function 函数名(形参1&形参2){函数体}
    5. 调用时,必须给引用传值的参数位置传入实际参数,而且参数本身必须是变量(变量才有只想的数据的内存地址)
    6. 值传递传递副本,引用传递传递地址
  7. 引用传递
    1. 实参在调用时会将值赋值给形参,那么实际上使用的方式就是一种简单的值传递:将实参(如果是变量或者常量或者其他表达式)的结果(值)取出来赋值给形参:形参与外部实际传入的参数本身没有任何关联关系:只是结果一样。
    2. 有的时候,希望在函数内部拿到的外部数据,能够在函数内部改变,那么就需要明确告知函数(定义时),函数才会在调用的时候去主动获取外部数据的内存地址。以上这种定义形式参数的方式叫作引用传值。
    3. 基本定义语法:Function 函数名(形参1,&形参2){//函数体}
    4. 在调用的时候,必须给引用传值的参数位置传入实际参数,而且参数本身必须是变量。(变量才有指向的数据的内存地址)
    5. 引用传值注意事项:在传入实参的时候,必须传入变量,只有变量能引用传递
  8. 可变个数参数(实参数不确定,指定形参接收若干个实参)
    1. func_get_arg() 返回当前的参数
    2. func_get_args()返回参数组成的数组
    3. func_num_args()返回参数的个数
    4. globals是包含所有全局变量的数组