函数初步

函数可以分成系统函数和用户自定义函数!

函数定义

所以,函数由函数名,参数列表和函数体(完成特定功能的一组代码)三部分构成!

函数调用

定义函数的目的就是在适当的时候可以拿来调用,可以多次调用!

使用函数调用操作符来调用,就是一对小括号()

如果函数有返回值,可以把该返回值赋给一个变量!

注意:函数必须先声明,后调用!但是,在写代码的时候,可以先调用后声明,因为,脚本在执行之前经过了一次预编译

注意:如果函数的定义是出现在一个被载入的文件内,则该文件一定要先载入,因为文件的载入是发生在代码的执行阶段,而不是在预编译阶段!

函数名

命名规则遵守基本的标识符的规则,但是不区分大小写(和变量名不一样),一般用小驼峰法来表示(后面的类名也不区分大小写,而类名一般用大驼峰法),并且,函数名不能重名,所以不能使用系统函数的函数名!

可变函数

可变函数的意思就是,函数名可以用一个变量名来代替!

可变函数常用于一组功能类似,但是函数名又不完全一致的情况:

比如:学习PHP处理图片的时候,需要利用图片创建一个画布,但是,创建画布的函数,会随着当前的图片的格式的不同而使用的函数!

匿名函数

PHP允许定义一个没有名字的函数,称之为匿名函数,在定义的时候,只需要省略掉函数的名字即可!

此时,函数应该作为一个值的形式,保存到一个变量内!

调用匿名函数的形式:变量名(参数列表)

此时,这个匿名函数其实是一个对象类型的数据!

匿名函数由于是Closure类的一个实例,而Closure就是闭包的意思,所以匿名函数也叫作闭包函数!

函数的参数

思考:函数为什么要有参数?

函数是相对独立的代码区,但不是绝对的独立,也就是说,函数对外应该需要一个或多个接口以实现相关数据的传递,这个接口一般都是用参数来实现的!

形参和实参:形式参数parameter

形参,是在定义函数的时候规定好的,这里的参数只是一个形式,默认的是没有值的,只是说明此处需要使用一个数据来代替,当前,定义函数的时候也可以没有形参

实际参数argument

实参,在调用函数的时候需要把实际的值传递给该函数(其实就是传递给了形参),这个时候,形参才有真正的数据!

思考:实参能不能使用一个变量来充当?

答案是可以的,那么在调用的时候,就变成了实参变量给形参变量赋值的一种情况?

此时,就出现了变量之间的传值了,所以就分成了值传值和引用传递!

参数的值传递:默认的就是值传递,在函数内,如果修改形参变量的值,不会影响到实参变量!

参数的引用传递也就是将实参的值地址传递给形参变量!

思考:求地址运算符应该放在实参的前面还是形参的前面?

注意:

1,如果要使用引用传递,就应该在定义函数的时候,就规定好,也就是在形参的前面加上求地址运算符&,意思是此参数应该是引用传递!

2,引用传递只有在变量与变量之间才有效,所以,在参数进行引用传递的时候,实参只能是变量!

参数的默认值

常规的,形参的值应该来源于实参的传递,但是,如果某些参数的值有比较常用的情况,可以为该形参设置一个默认值:

总结:

1,函数在调用的时候,如果传递了相应的实参,那么该形参的值就是使用实参的值,如果没有传递实参,就使用该形参的默认值

2,如果一个函数中的有些参数存在默认值,应该将该参数放在整个参数列表的最后面!

参数的数量问题:一般来说,实参和形参的数量应该一样,也就是一一对应

实参多于形参可以正常的运行,所有的形参按实参的顺序依次获得即可!多余的直接舍弃掉了!

实参少于形参

只有一种正常的情况,就是形参列表最后有默认值的形参可以不用赋值!

除此之外,一般会报告一个警告级别的错误,但是,脚本会继续运行,只是此时只有部分形参可以获得数据,没有赋值成功的形参,相当于没有该形参变量!

不定参数的函数

思考:假如需要用户自己定义一个类似于下面系统函数max的功能,函数的参数应该如何定义?

此时,无论定义多少个都不合适,干脆一个都不定义!但是,此时我们必须要考虑如何才能获得当前的实际参数的值!是利用一个系统函数来实现的:

func_get_args():该函数的作用就是可以获得当前函数所接收的所有实际参数的值,并以索引数组的形式保存!

所以,我们只需要遍历该数组,得到该数组的最大值即可:

另外的几个函数:func_get_arg()获取某个参数的值,使用参数的索引位置来表示,从0开始,比如func_get_arg(3)得到的就是第四个实参的值!

func_num_args()获得参数的数量

函数体

就是可执行代码的集合,以完成特定的功能!每个函数的函数体都各不相同!

其中一条return语句比较重要!

return语句

作用:

1,将函数的返回结果,返回给调用该函数的位置!

2,停止函数的运行

也就是说,当函数一旦执行到return语句,就马上结束整个函数的运行!

思考:

1,函数体内能不能有多个return语句呢?

能,但是只能执行其中的一条!

2,如果一个函数的内部确实有很多值需要返回,怎么办?

应该先把这些需要返回的数据放到一个数组变量中,然后返回这个数组就行了

php语言好学习吗,带你学习世界上最好的语言PHP(七)相关推荐

  1. python是最好的语言 永远二十岁_Python是世界上最好的语言吗?

    编程语言的选择是IT圈子永远的争议.在任意一个程序员聚集的场合,喊一句类似于"PHP是世界上最好的语言"这样的话,肯定会惹来不少人和你争论得面红耳赤.那么,python是世界上最好 ...

  2. JavaScript 是世界上最好的语言?

    JavaScript 是世界上最好的语言 可能对于不同的来说世界上最好的语言可能非常vary,但是对于我来说,JavaScript就是我心目中那个最好的语言,由最开始只是出于响应式编程的toy lan ...

  3. php 7月世界排名2017,TIOBE2017榜单公布,PHP还会是世界上最好的语言吗?

    TIOBE 2017最新编程榜单 第1:java,第2:C,第3:C++....第6:php 看到这个榜单,我的记忆瞬间回到了十年前. 那时我结识了原配asp,asp代码真的好简单啊,看了遍<十 ...

  4. JS是世界上最好的语言—— 使用Electron开发桌面应用(一)

    Electron 可以让你使用纯 JavaScript 调用丰富的原生(操作系统) APIs 来创造桌面应用. 你可以把它看作一个专注于桌面应用的 Node. js 的变体,而不是 Web 服务器. ...

  5. 多迪技术总监揭秘:PHP为什么是世界上最好的语言?

    PHP这么一个脚本语言,虽然他是web开发中,使用者最多的语言,最快最简单的语言,生态环境和社区积累最深厚的语言,作为最好的编程语言,多迪技术总监为你介绍:PHP为什么是世界上最好的语言? 1.PHP ...

  6. php培训js重要么,php何以被戏称为“世界上最好的语言”?请看它与js的对比!...

    有位朋友已经自学了几个月的前端知识,js的基本语法掌握的也不错,现在因为项目需要想通过php从后台数据库哀求数据.他总是问我:php难学吗?如果我仅仅需要获取动态数据然后在前端展示,应该从哪里学起?因 ...

  7. unix 系统已经消亡了吗_世界上一半的语言正在消亡。 我们应该保存它们吗?

    unix 系统已经消亡了吗 目前,目前约有7,000种语言在使用 ,一种语言每两周就会消失. 联合国教科文组织说,在一个世纪的时间内,世界上一半的语言可能会消失. 而且,在我的祖国印度, 过去50年中 ...

  8. PHP是世界上最好的语言?Phython第一个不服

    如何一句话惹怒所有程序员? 大喊一句"PHP是世界上最好的语言". 是的,这只是个段子. 关于PHP的各种花式调侃从未断过. 如果说程序员之间存在一条鄙视链的话,那PHP一定处在这 ...

  9. php是最好的语言 梗,php是世界上最好的语言,这个梗怎么来的

    出处 (推荐学习:PHP视频教程) "php是世界上最好的语言"这句话,最早出现在2001年7月的PHP文档中. 而在这之后不久,我们就可以看到更激进的言论了,Because PH ...

  10. python是世界上最好的语言什么梗gif_“PHP是世界上最好的语言”,是什么梗?

    原标题:"PHP是世界上最好的语言",是什么梗? 最早看到这个是由于下面这个笑话 某女:你能让这个论坛的人都吵起来,我今晚就跟你走. 某软件工程师:PHP是最好的语言!某论坛真的就 ...

最新文章

  1. Hyper-V 3.0功能部署PART 5:秒级实时迁移
  2. 如何在Python中使用“ with open”打开多个文件?
  3. CRM订单状态的Open, In process和Completed这些条目是从哪里来的
  4. (转)分布式锁的几种使用方式(redis、zookeeper、数据库)
  5. vue-codemirror基本用法:实现搜索功能、代码折叠功能、获取编辑器值及时验证
  6. (17)Verilog HDL结构:always语句
  7. 【Flink】FLink Assigned key must not be null
  8. 一寸相思千万绪,人间没个安排处。
  9. Pentest Wiki Part4 后渗透(二)
  10. 深入dwr2-commet模式
  11. DNS详解,权威DNS,递归DNS,转发DNS,公共DNS
  12. gedit 编辑器使用教程
  13. 微型计算机m3500q,爆发“小”宇宙 创新与实用完美结合 ——联想ThinkCentre M3500q超小商用台式机新品发布...
  14. android源码分析
  15. 谷歌拼音输入法的安全漏洞
  16. 重庆大学计算机学院最好老师,“一切都是最好的安排”——蒲俊杰老师喜获重庆大学“最受学生欢迎老师”称号...
  17. OFO和摩拜共享单车
  18. C语言结构体的1字节对齐(代码实现)
  19. 最常见的英文写作问题
  20. Keil,eclipse, netbean, codeblock三个的初步应用体会。

热门文章

  1. CentOS:美化中文字体
  2. 微信微网站不会走远的
  3. 仿照淘宝首页做的一个高度伪对齐demo
  4. 【商业逻辑分析】之二:为什么说在天猫、京东等开店的商家大部分都面临危机?
  5. Processing制作水波纹动画
  6. android github 开源的图片剪辑库使用效果记录
  7. How to Write and Publish a Scientific Paper-How to Write the Materials and Methods Section
  8. 抖音表情号内容制作方法,项目特点技巧分享,变现方法如何?
  9. position用法
  10. mysql update inner join 多表_UPDATE INNER JOIN 两表联合更新