一、      数学中的函数:

  a)    sin()、cos()、tan()、log() 这些都是数学函数,但是都已经忘了啥意思了!没关系,在php当中的函数和这些函数的概念还是有一定的区别的

二、      生活中的函数:

  a)    定义:某一个具有名字的工具,它能够完成一些指定的任务!这样的东西,我们就可以称之为一个函数!

  b)    举个例子:

i.         石头:它的名字就是石头,它的作用就是砸核桃,攻击!

ii.         长矛:它的名字就是长矛,它的作用是插、扎、刺、砍!

iii.         打火机:它的名字就是打火机,它的作用就是点烟,点火,放炮……

iv.         小米:它的名字是小米,它的作用可以吃,还可以打电话!

v.         锤子:它的名字是锤子,它的作用可以钉钉子,还可以打电话,按摩

vi.         三星:它的名字是三星,它的作用可以打电话,爆破!

三、      为啥要使用函数?

  a)    1.使用函数可以让我们的工作效率更高【代码效率更高】

  b)    2.它能够使我们的代码更简洁

  c)    3.它更易于维护!

四、      PHP当中的函数:

  a)    定义:能够完成指定任务的,还得是已命名的代码块,这就是php当中的函数!

  b)    函数的分类:

    i.系统函数:

      1.    其实我们已经见过了很多的系统函数了!但是之前我都叫他小工具!我都是昧着良心叫的

      2.    例如:var_dump()、isset()、empty()、settype()、gettype()、is_int()、is_float()……………这些系统已经定义好的函数,都是系统函数!

      3.    如何来使用一个系统该函数(看手册)?

        a)    看函数的功能

        b)    看函数的参数

        c)    看函数的返回值

        d)    看函数的一些实例

    ii.         自定义函数:

      1.    需要自己手动去创造的函数,就属于自定义函数,它是系统函数当中不存在的那些函数!

五、      你的第一个自定义函数:

  a)    定义函数的几个步骤:

i.         写程序代码

ii.         给程序代码外面加上花括号

iii.         花括号前方起了一个名字,并且加上了小括号

iv.         最后才在最前方加上了function关键

  b)    关于函数的命名规则:

i.         字母数字下划线组成、不能使用数字开头,不区分大小写,不能重复定义,不能使用关键字命名!

  c)    关于函数的使用方法:

i.         直接将函数名字拿过来用即可

ii.         Function 函数名(参数1[,参数2,参数3,…]){

          函数体;

iii.         }

iv.         使用:函数名()

  d)    关于函数的参数:

    i. 形参:

      1.    定义:形式上的参数

      2.    形参,是我们在定义一个函数的时候,写在函数名后方小括号当中的变量的内容

      3.    形参可以定义多个,但是一定要有意义

      4.    多个形参之间使用逗号隔开

      5.    形参的个数可以使无数个

    ii.实参:

      1.    定义:实际上的参数

      2.    实参,是我们在调用一个函数的时候,写在小括号当中的实际内容

      3.    实参也可以定义多个,但是一定要和形参是一一对应的!

      4.    实参之间也是使用逗号隔开的!

      5.    实参的值也可以是存值的变量

    iii.         默认值:

      1.    在某些情况下,函数的某一个参数可能是固定的值不变,因此这种情况下,我们通常胡给定那个参数一个默认值!

      2.    只有形参当中有默认值的情况下,实参和形参的数量可以不一一对应,这是一个例外情况

      3.    拥有默认值的形参,必须放到参数列表的后方

      4.    拥有默认值的形参,实参处可以不给定值,但是,如果实参处给定了具体的值,则实参的值会覆盖形参的值

    iv.         函数的使用位置:

      1.    函数的使用可以在函数之前,也可以在函数之后

      2.    原因:当程序执行某一个脚本,会将脚本当中的所有函数存放到缓冲区当中,缓冲区是内存当中的一个区块,所以,无论在当前脚本的任何位置,都是可以调用缓冲区当中的函数的!

    v.         函数当中的return关键字:

      1.    我们通常使用的函数,都是将结果保存下来,而非直接输出,因此,在函数中使用return关键字,可以将结果返回到调用处,并且保存下来!

      2.    Return后面的代码一概不执行,在PHP当中不会报错,但是在JAVA当中会直接报错,并告诉你,这里的代码是永远无法到达的代码,建议删除!

    vi.         变量的作用域:

      1.    因为函数的出现,导致了变量作用域的不同!

      2.    全局变量

        a)    定义:在php脚本当中所定义的变量就属于全局变量!

        b)    全局变量作用域当前整个脚本!

        c)    在函数当中如果想要使用一个全局变量,需要使用global关键字来将外部的全局变量叫到函数内部

      3.    局部变量

        a)    定义:在函数当中所定义的变量,叫做局部变量!

        b)    局部变量只作用于函数内部!

      4.    静态变量(了解!)

        a)    定义:在函数当中使用static关键字声明的变量就属于一个静态变量。

        b)    静态变量会保留上次执行完的结果,而且静态变量在函数中赋初值的操作只执行一次!

        c)    原理:当第一次调用拥有静态变量的函数,静态变量的值会直接存储到静态区当中,当下一次在调用该函数的时候,会首先去静态区当中寻找是否已经拥有该静态变量,如果有直接拿过来使用。

      5.    超全局变量(了解):

        a)    $GLOBALS:包含所有的超全局变量!

          1.    $_SERVER:服务器和执行环境信息

          2.    $_GET:通过URL参数传递给当前脚本的变量的数组

          3.    $_POST:通过HTTP POST方法传递给当前脚本的变量

          4.    $_FILES:保存文件的上传信息

          5.    $_COOKIE:通过HTTP Cookies方式传递给当前脚本的信息

          6.    $_SESSION:当前脚本可用 SESSION 变量的数组

          7.    $_REQUEST:包含GET、POST和COOKIE信息的集合

      vii.关于函数库的引入:

        1.    函数库其实就相当于一个工具箱,当我们需要使用工具箱当中的某一个工具的时候,直接将工具箱拿过来即可!

        2.    Include(“”)  或  include “”;

          a)    常用于引入一些并非非常重要的函数库

          b)    如果include方法引入文件失败,会提示一个warning级别的错误,但是脚本依然可以执行!

        3.    Require(“”)  或  require “”;

          a)    常用于引入一个对当前脚本非常重要的函数库

          b)    如果require方法引入文件失败,会提示一个Fatal级别的错误,这是致命错误,将会中断整个脚本的执行!

        4.    Include_once

          a)    如果重复引入一个文件,include_once代表只引入一次当前文件!

          b)    其他特点同上!

        5.    Require_once

          a)    如果重复引入一个文件,require_once代表只引入一次当前文件

          b)    其他特点同上!

      viii.可变参数个数的函数!(了解)

        1.    Func_num_args()     获取实参总个数!

        2.    Func_get_args() 获取实参列表的详细信息

        

          在这个列表当中,0-5代表下标,10-60代表对应的值

        3.    Func_get_arg()  获取指定下标的实参信息

      ix.引用函数:

        1 function demo(&$num1){
         $num1=200;
         }
        
         $num1=100;
         demo($num1);
         echo $num1;

        1.    注意:

          a)    使用引用函数概念是,要注意,在实参处存放的值应当是一个变量,而不是一个实际的值,因为值没有地址,变量有地址!

      x.变量函数[ 回调函数 ]:

        1.    定义:将一个函数的名字作为一段字符串,赋值给一个变量,则该变量名可以作为函数名去使用!

      xi.回调函数:(了解!)

        1.    定义:一个函数当中可能会调用另外的一个函数,这就是一个回调函数!

        2.    注意:

          a)    回调函数会使用到变量函数的概念!

          b)    回调函数通常是应用在一些对于主程序的规则限制的作用

      xii.递归函数:

        1.    递:进去

        2.    归:出来

        3.    递归其实就是函数自己玩自己!

【PHP】函数的更多相关文章

  1. Python 小而美的函数

    python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况   any any(iterable) ...

  2. 探究javascript对象和数组的异同,及函数变量缓存技巧

    javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...

  3. JavaScript权威指南 - 函数

    函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对 ...

  4. C++对C的函数拓展

    一,内联函数 1.内联函数的概念 C++中的const常量可以用来代替宏常数的定义,例如:用const int a = 10来替换# define a 10.那么C++中是否有什么解决方案来替代宏代码 ...

  5. 菜鸟Python学习笔记第一天:关于一些函数库的使用

    2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...

  6. javascript中的this与函数讲解

    前言 javascript中没有块级作用域(es6以前),javascript中作用域分为函数作用域和全局作用域.并且,大家可以认为全局作用域其实就是Window函数的函数作用域,我们编写的js代码, ...

  7. 复杂的 Hash 函数组合有意义吗?

    很久以前看到一篇文章,讲某个大网站储存用户口令时,会经过十分复杂的处理.怎么个复杂记不得了,大概就是先 Hash,结果加上一些特殊字符再 Hash,结果再加上些字符.再倒序.再怎么怎么的.再 Hash ...

  8. JS核心系列:浅谈函数的作用域

    一.作用域(scope) 所谓作用域就是:变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的. function scope(){ var foo = "global&quo ...

  9. C++中的时间函数

    C++获取时间函数众多,何时该用什么函数,拿到的是什么时间?该怎么用?很多人都会混淆. 本文是本人经历了几款游戏客户端和服务器开发后,对游戏中时间获取的一点总结. 最早学习游戏客户端时,为了获取最精确 ...

  10. Python高手之路【四】python函数装饰器

    def outer(func): def inner(): print('hello') print('hello') print('hello') r = func() print('end') p ...

随机推荐

  1. Python 装饰器(无参,有参、多重))

    Python装饰器介绍 在Python中,装饰器(decorator)是在闭包的基础上发展起来的. 装饰器的实质是一个高阶函数,其参数是要装饰的函数名,其返回值是完成装饰的函数名,其作用是为已经存在的 ...

  2. 玩转控件:重写/重绘Dev中MessageBox弹窗控件

    很久没有更新博客了,本想着直接发一篇<手撕ERP>系列,从控件重写.重绘,到框架搭建,再到部分模块实现+业务的.但是每次动手的时候,都觉得难以下手.直接从数据库设计开始吧,模块设计还没定下 ...

  3. Redis基本数据类型、数据持久化、过期策略及淘汰机制

    一点技术.技术乐享!!! 如果有人问你:Redis这么快,他的“多线程模式”你了解吗? 请回答他:您是想问Redis这么快,为什么还是单线程模式吗? redis是什么 简单来说redis是C语言开发的 ...

  4. 推荐三款好用的JSON格式化工具——JSON-handle & HiJson & JSTool

    工具一:JSON-handle JSON-Handle是一款谷歌浏览器插件. 1.访问http://jsonhandle.sinaapp.com/下载 2.打开Chrome浏览器的扩展程序(访问chr ...

  5. Uniapp使用GoEasy实现websocket实时通讯

    Uniapp作为近来最火的移动端开发技术,一套代码,可以打包成Android/iOS app和各种平台的小程序,可谓是没有最方便只有更方便. GoEasy上架DCloud Uniapp插件市场已经有一 ...

  6. SpringMVC框架——文件的上传与下载

    使用SpringMVC框架做个小练习,需求: 1.单个图片上传并显示到页面中: 2.多个图片上传并显示到页面中: 3.上传文件后下载文件: 1.pom.xml中添加依赖 <!-- 文件上传 -- ...

  7. Uncovering thousands of new peptides with sequence-mask-search hybrid de novo peptide sequencing framework (使用序列掩码搜索结合肽段从头测序框架发现了数千个新肽段)-解读人:刘佳维

    期刊名:Molecular & Cellular Proteomics 发表时间:(2019年12月) IF:4.828 单位: 朱拉隆功大学 费城威斯塔研究所 物种:人 技术:de novo ...

  8. 解决Requires: libc.so.6(GLIBC_2.14)(64bit)错误解决方法

    glibc简介: glibc是GNU发布的libc库,即c运行库.glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc.glibc除了封装linux操作系统所提供的系统服 ...

  9. Android应用开发基本流程

    Android应用开发流程 应用规划及架构设计 开发应用程序的步骤 项目有哪些功能. 需要哪些必要的界面及界面之间跳转的流程. 需要的数据及其数据的来源和格式. 是否需要服务器端的支持. 是否需要本地 ...

  10. 数学-概率-New 21 Game

    2020-02-10 13:24:26 问题描述: 问题求解: 第一次看到这个题目的时候想到的是之前做过的一条概率题,就是那个国际象棋,那条题目的做法是使用dp去对所有留在棋盘的种类进行计数,然后除以 ...