前两天讲过PHP基础知识的判断条件和流程控制,今天来讲讲PHP基础知识之PHP基础入门--函数!

一、函数的声明与使用

1、函数名是标识符之一,只能有数字字母下划线,开头不能是数字。

函数名的命名,须符合"小驼峰法则":myNameIsXiaoxi my_name_is_xiaoxi

函数名不区分大小写。func() Func() FUNC() 都可以

函数名不能与已有的函数名重复,不能与系统函数名重复。

2、function_exists("func1");用于检测函数是否已声明;

注意:传入的函数名,必须是字符串格式:返回结果为true/false。

二、PHP中变量的作用域

1、局部变量:声明在函数内部的变量,称为局部变量。只在函数内部能用,函数外加需使用,需在函数中使用return关键字返回。

2、全局变量:声明的函数外部的变量,称为全局变量。

3、函数中,使用变量,默认使用内部局部变量。如果,需在函数中使用全局变量,需要使用global关键字,将全局变量引用函数,才能使用。

函数中的变量名,如果与全局变量重复,global语句之上,为函数局部变量;global语句之下,为系统全局变量。

4、 $GLOBALS[]全局数组:

$GLOBALS[]数组,是PHP给我们内置的全局数组,可以直接给数组添加值,无论在函数内外声明,均可在任何地方直接使用。

$GLOBALS["a"] = 10; ---> echo $GLOBALS["a"];//任何位置直接使用

5、函数中使用全局变量,还有一种方式:通过给函数传参,可以在函数内部使用全局变量;

但是,传递以后的参数是函数的局部变量,内部改变,外部不会变。

除非,传递的参数是地址function func($a1,&$a2){} //函数内部修改a1,则全局a1不会变,函数内部修改a2,则全局a2会变。

如果函数的形参,出现了取址符号,则,调用函数时,实参必须是变量,而不能是字面量。

6、使用require与include包含不会影响作用域。

三、静态变量

1、静态变量,使用static关键字声明。static $num = 10;

2、静态变量的特点:

>>>静态变量在函数第一次加载的时候进行声明。

>>>函数使用完不会立即释放静态变量,静态变量在整个脚本执行过程中,只会声明一次。

>>>同一函数,多次调用,共享同一个静态变量。

四、函数的参数传递

1、在PHP中,涉及参数传递时:实参列表只能比形参多,

2、常规参数传递:function func($a){} func($a);

3、引用参数传递:function func(&$a){} func($a);

①通过&引用参数传递,函数内修改变量,函数外同步变化

②形参为引用参数,实参只能是变量,不能是字面量 func(10); ×

4、默认参数:function func($b,$a=10){} func(20);

//是$可以不传,默认为10;$b必须传递,否则使用时未定义报错。

如果参数中既有默认参数,也有非默认参数,那么默认参数列表

必须要在非默认参数列表后面,即调用的时候必须保证非默认列表的优先赋值。

5、可变参数列表:由于PHP实参可以比形参多,那么我们可以传递N个实参,并通过PHP内置函数取到对应参数。

var_dump(func_get_args());//取所有参数列表(数组)

var_dump(func_num_args());//返回参数的总个数相当于count(func_get_args());

var_dump(func_get_arg(0));//根据下标,返回每个参数

五、变量函数

1、将一个函数名,转为字符串后,赋给一个变量。这个变量,就是我们所说的变量函数,可以加()调用函数内容。

function func(){}--->$fun = "func";--->$func();

六、回调函数

1、使用变量函数,自定义回调函数

function func($func){$func();}--->function f(){}--->func("f");

2、使用call_user_func_array和call_user_func自定义回调函数;

两个函数的第一个参数,均为回调函数,表示执行当前回调。

不同点在于:call_user_func_array()第二个参数为数组,并将数组的每一个值赋给回调函数的参数列表,相当于JS中的apply();

而call_user_func,是将回调函数的参数列表,直接展开写到第2~多个参数中,相当于JS中的call();

eg:call_user_func_array("func",array(1,2,3));

--> func(1,2,3);

call_user_func("func",1,2,3); --> func(1,2,3);

七、匿名函数

由于变量函数,在调用时存在多种调用方(func()/$func();)

所以为了让函数的调用更为同一,才产生了匿名函数!!!

声明匿名函数,函数体后面的分号必不可少!

匿名函数本身也是变量,用var_dump();检测为Object类型

八、PHP闭包

在PHP中,子函数无法直接访问父函数的局部变量,必须使用User关键词向下传递!!!

文章收集与网络,辛苦收集转载请备注出处全能大脸猫博客!

PHP丨PHP基础知识之流程控制WHILE循环「理论篇」

PHP丨PHP基础知识之条件语IF判断「理论篇」

PHP丨PHP基础知识之条件语SWITCH判断「理论篇」

函数 php_PHP丨PHP基础知识之PHP基础入门——函数「理论篇」相关推荐

  1. php switch 函数,PHP丨PHP基础知识之条件语SWITCH判断「理论篇」

    Switch在一些计算机语言中是保留字,其作用大多情况下是进行判断选择.以PHP来说,switch(开关语句)常和case break default一起使用 典型结构 switch($control ...

  2. php中while的用法,PHP丨PHP基础知识之流程控制WHILE循环「理论篇」

    刚刚讲完FOR循环今天来讲讲他的兄弟WHILE循环!进入正题: while是计算机的一种基本循环模式.当满足条件时进入循环,进入循环后,当条件不满足时,跳出循环.while语句的一般表达式为:whil ...

  3. db2 replace函数的用法_SQL基础知识:常用字符处理函数

    原标题:SQL基础知识:常用字符处理函数 作者:丶平凡世界

  4. 计算机基础表格函数基础知识大全,计算机基础-EXCEL公式和函数.ppt

    计算机基础-EXCEL公式和函数.ppt (44页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.9 积分 Excel电子表格二.公式和函数Excel ...

  5. Python基础知识详解 从入门到精通(八)魔法方法

    目录 Python基础知识详解 从入门到精通(八)魔法方法 什么是魔法方法 基础魔法方法(较为常用) 比较操作符 算数运算符 反运算(类似于运算方法) 增量赋值运算 一元操作符 类型转换 上下文管理( ...

  6. python基础知识下载_python基础知识(实用)

    文档来源为 : 从网络收集整理 .word 版本可编辑 . 欢迎下载支持 . 1 Python 基础知识 目录 Python 基础知识 ................................ ...

  7. 科学计算机程序 字表处理软件都是,计算机应用基础知识_计算机应用基础试题及答案【最新资料】.doc...

    计算机应用基础知识_计算机应用基础试题及答案[最新资料] 计算机应用基础知识 计算机应用基础试题及答案 ? 计算机应用基础知识1.1填空题1.第一代计算机采用的电子器件是--[答案] 电子管2.第四代 ...

  8. 公共基础知识计算机,公共基础知识计算机基础知识试题

    计算机基础知识是公共基础知识考试的组成成分之一,以下是由学习啦小编整理关于共基础知识计算机基础知识试题的内容,希望大家喜欢! 公共基础知识计算机基础知识试题 1.CPU的主要功能是进行( ). A.算 ...

  9. 【基础知识】RMAN基础知识-Part2

    接上一篇[基础知识]RMAN基础知识-Part1 利用两篇将之前学的内容整理出来,又做了一遍实验,常用不常用的都有.有很多可以深挖的点,后面慢慢搞再 一.配置备份集-备份片-压缩-加密 1.配置备份集 ...

  10. 学习插画前期需要什么基础知识?插画师入门基础先学什么?

    学习插画前期需要什么基础知识?插画师入门基础先学什么?零基础到插画师需要学多久?想必这些问题都是初学者比较伤脑筋的问题,那么初学者学习插画前期需要什么基础知识呢?今天小编就在网络上收集整理了关于插画师 ...

最新文章

  1. 作价20亿美元!英特尔收购以色列AI芯片公司Habana Labs
  2. 碰撞检测碰撞Java简单游戏开发之碰撞检测
  3. Select的OnChange()事件
  4. 2021-10-21 二叉堆 恋上数据结构笔记
  5. 上传jar包到Apache Archiva本地仓库
  6. easyui中的option设置selected没有效果
  7. Magicodes.IE 2.5.4.2发布
  8. 手机老显示存储空间不足该咋办?可删除哪些内容来增加存储空间?
  9. Android进阶:ListView性能优化异步加载图片 使滑动效果流畅
  10. python弹出窗口的代码_Python+selenium(7)-弹出窗口的代码封装,PythonSelenium,七,弹窗...
  11. windows server 2012 AD 活动目录部署系列(二)创建域控制器
  12. 估值40亿美元后,完美日记的逆袭与成长新烦恼
  13. [Android]SIM字段EF_SUME(6F54) 可用作STK app name
  14. 小白零基础学习Java编程好学吗?
  15. 欢祝圣诞——北斗星的爱!
  16. 纯C语言写计算器界面
  17. BP 供应商创建与修改
  18. 盘点!一篇看完2018年中国各地编程教育政策
  19. 这一年,你过得还好吗?
  20. ES(elasticsearch)搜索引擎安装和使用

热门文章

  1. 华为招聘产业联盟高级专家、 开发者生态专家
  2. 2018 KubeCon + CloudNativeCon成功召开
  3. oracle用户有关操作,oracle用户会话操作
  4. 【电路仿真】基于simulink全数字锁相环设计【含Matlab源码 340期】
  5. 【图像配准】基于matlab SIFT图像配准【含Matlab源码 148期】
  6. js打印线程id_理解Python多线程:通过易懂的小例子展开第一篇
  7. 工业革命 书_工业革命以来最重大的变化
  8. 永久删除谷歌浏览器缩略图_“暮光之城”如何永久破坏了Google图片搜索
  9. ai/ml_十大ML / AI现实世界项目,以增强您的产品组合
  10. switchyomega规则列表备份_一键备份微博并导出生成PDF,顺便用Python分析微博账号数据...