重蔚php学习第二十七天——php可变变量,匿名函数

运算符:赋值运算符,算术运算符,错误抑制符,比较运算符,逻辑运算符,三元运算符,位运算符,连接运算符,自操作运算符(在项目计算当中,非常不建议使用多个自操作一起运算)

源码反码补码

  1. 整数的原码反码和补码一致,就是本身转化成二进制
  2. 负数在内存里保存的是补码形式

负数求补码:1.先求出源码,2.源码取反(符号位不变),3.反码加1

二进制求源码:

  1. 正数的话直接二进制转十进制
  2. 负数,有两种方式:第一种先补码-1,然后取反(符号位不变);第二种方式,先取反(符号位不变),再+1

流程结构:顺序结构,分支结构,循环结构

分支结构:if分支,switch分支

If可以实现任何分支,switch是对具体值使用(数值,字符串)

最简if:if(条件表达式){}

标准if:if(条件表达式){}else{}

赋值if:if…else if…else if…else

Switch要注意case中break的使用。

循环结构:for,while,do-while,foreach

For循环:已知循环次数

While循环:

Do-while循环:不管条件怎么样,都会至少循环一次(在条件变量判断前)

Foreach循环:针对PHP数组进行遍历

Continue:继续,中止当前循环的后续循环体,重新开始下一次循环

Break:跳出,完全终止整个循环,使循环结束

image002

循环控制,可以使用数字来指定操作的循环层数

image004

函数

系统函数和自定义函数

自定义函数的调用需要先定义(指的是代码区在调用函数之前已经存在该函数,这个与函数在脚本中与调用出的顺序没有关系)

被调用的函数执行结束,回到函数调用处。

 

函数基本要素:函数名,函数体,返回值,参数

 

在函数定义的时候:参数被称之为形参,形参没有值

在函数调用时传入的参数:实际参数,实参赋值给形参,所以形参是有值的

 

默认的参数的传递是值传递。

如果需要使用引用传值,那么需要在定义函数的时候对形式参数添加一个&符号。

image006

作用域:全局作用域,局部作用域

全局作用域:PHP中指的是函数之外定义的变量,只能在函数之外被使用,不能在函数里使用

局部作用域:在函数内部定义的变量,只能在当前函数里面使用

如果想在函数内部使用全局变量,PHP提供了两种方式

$GLOBALS直接将外部的变量的作用域扩展,$GLOBALS针对的外部变量本身,所有的操作跟在外部操作变量本身是一致的。$GLOBALS[‘变量名’],如果在函数内部对$GLOBALS进行unset操作,会删除外部变量。

Global关键字,在函数内部定义一个同名变量,该变量指向外部变量所对应的内存空间。所以在函数内部操作global对应的变量,会导致外部变量所对应的值的变化。如果对global定义的变量进行删除,只会删除函数内部变量对应的引用,而不会改变外部变量。

 

返回值:return关键字

Return可以返回任何类型的数据

Return可以没有任何返回值:return;//表示当前函数执行到这个地方结束了,后面代码不在执行

image008

什么时候使用return进行返回呢?又返回什么内容?

当我们需要函数进行返回某个数据的时候,就使用return进行相关数据的返回,如果不需要返回值的话,可以没有return。

可变变量

对一个变量的值再次进行变量操作

语法:$$变量名

前提:该变量名对应的值,与另外一个变量的名字相同。

image010

可变变量的原理:先将变量对应的值给取出来,然后与变量符号“$”进行合并,从而构造出一个新的变量名字,然后再对该变量进行读取

image012

匿名函数

隐藏名字,没有名字的函数

语法:通过一个变量接收函数对应的地址,从而实现没有名字的函数,匿名函数。

$变量名 = function(参数列表){

//函数体

};

 

匿名函数的使用

用的最多的地方,回调函数(callback),指的是当一个函数在运行的时候,需要调用其他的函数,这个其他的函数是通过函数的参数给传进去的。

定义匿名函数

image014

如何调用匿名函数?

函数没有名字,所以不能通过函数名字进行调用。

当前所了解的只有函数的内存地址。地址保存在变量里。只能通过该变量找到该函数。

调用匿名函数

语法:$变量名(参数列表);

image016

匿名函数的原理

image018

注意:如果要使用变量的形式调用函数,要保证变量在赋值的时候,是被赋值的一个函数内容。

 

可变函数

当一个函数并不是被直接通过函数名调用,而是通过变量去调用,变量的值对应的是函数名。

image020

原理

image022

闭包匿名函数语法

Function 函数名(参数列表){

//外部函数函数体

Return Function(新参数列表) use(外部函数的参数列表){

//内部函数的函数体

}

}

函数参数

函数参数的默认值,在定义函数参数,给形参指定一个默认的值。

image024

参数默认值的应用

为了保证函数的健壮性。有一些不是很重要非要用户填写的参数,就会使用默认值。

调用带默认值的函数,跟正常调用一样,只是在有默认值参数地方,可以选择不输入实际参数

image026

函数参数默认值定义和调用原理

image028

伪类型

在返回或者对某个变量要求指定类型,通常见得最多的是函数的返回值类型。

Mixed:混合的,不确定具体类型

连接数据库mysql_connect,连接成功返回一个资源,连接失败返回一个false

Number:数字的,返回一个数值

Callback:回调函数,这个通常是用在函数的参数列表

当某个函数执行的时候,需要调用一个额外的函数来实现。这个额外的函数就是回调函数。

Void:空,指的是没有返回值,或者函数调用不需要参数

当我们去查看操作手册的时候,能够理解函数的一些信息

数据类型转换

指的是将一个数据(值)的类型进行改变,转换成其他类型。

在PHP中,数据类型转换通常是系统自动实现的。自动转换。是因为PHP是弱类型语言。

 

什么情况下PHP会自动转化呢?

凡是数据操作,但是又不是符合操作类型的数据格式的时候,系统就会自动操作。

$a = 10;             //整型

$b = ‘123’;        //字符串

$a + $b;    //基本的算术运算,只能对数值进行运算,PHP会对$b进行转换,123,转化成数值再进行运算

$a . $b;     //字符串拼接,要求都是字符串,系统会对$a 转化成字符串格式’10’,然后再进行操作

If($a);       //判断布尔值,要求是布尔类型,系统会对$a转化成布尔值true,再进行判断

 

PHP自动转化很强大,所有用户不需要担心,使用不同的格式会出错。

但是,作为程序员的基本素质,是要控制代码每一行,所以不允许随便使用格式,在使用时,需要对数据类型进行判断。

 

如何进行数据类型判断?

is_bool:判断一个变量是否是布尔类型,如果是则返回true,不是返回false

is_float:判断一个变量是否是浮点型

is_integer:判断变量是否是整型

is_object:判断变量是否是对象

is_array:判断变量是否是数组

is_string:判断变量是否是字符串

is_resource:判断变量是否是资源

is_scalar:判断变量是否是标量(整型,浮点型,字符串,布尔)

is_null:判断变量是否为空

is_numeric:判断变量是否是数值(包含整型和浮点型)

image030

什么时候需要判断数据类型?

PHP不相信任何外来数据。凡是不是PHP自定义的变量,PHP都不相信。所有外来数据,PHP都需要对其进行判断。

image032

如何获得数据类型?

PHP使用gettype函数能够获得一个变量的数据类型

这里不能使用var_dump去打印gettype返回的结果,因为得到的结果是一个字符串

image034

如何改变数据类型?

Php提供了一个函数settype,设定一个变量的类型。

image036

注意:在改变变量的数据类型的时候,会对其指向的内存空间的值进行数据类型转换,从而导致数据值的改变。

强制数据类型转换

使用某种手段强制改变某个数据的数据类型。

语法:(目标数据类型)变量

改变的是变量值本身,不会去变量值对应的内存空间进行改变,相当于是copy了一份内存空间的值,然后对其进行改变。

Int:

Integer:转化成整型

Bool:

Boolean:转化成布尔型

Float:转化成浮点型

String:转换成字符串型

Array:转化成数组

Object:转化成对象

上面的各种强制转化与使用settype效果是一样的,区别在于settype能够提供很多种选择,可以随意的转换成需要的数据类型。

image038

不管是系统自动转化也好,还是强制转化也好。本质都将变量的值进行类型改变。因为变量没有数据类型,变量的值有数据类型。

如何实现公共代码的重用?不要每次都写。

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/2175.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
重蔚的头像重蔚管理团队
上一篇 2017年5月5日 10:59
下一篇 2017年5月5日 22:50

相关推荐

  • PHP中的代码管理工具。

    PHP是一种常用的动态编程语言,用于构建各种Web应用程序。为了有效地管理PHP代码,开发人员可以使用各种代码管理工具。本文将介绍几个常见的PHP代码管理工具以及它们的优势。GitGit是最受欢迎的版本控制系统之一,…

    2023年5月28日
    04
  • 我来分享php跳转到指定url代码。

    在PHP中,我们可以使用`header()`函数来实现页面的跳转,`header()`函数可以发送一个原始的HTTP报头给客户端,这个报头包括了状态码、头部信息和可能的重定向信息,当服务器发送一个响应给客户端时,它会首先设置状…

    2024年6月19日
    00
  • 关于oracle的伪列有哪些。

    Oracle的伪列包括ROWNUM、ROWID、LEVEL、CURRVAL、NEXTVAL、PRIOR、NEW和OLD等。这些伪列在查询过程中可以提供额外的信息,如行号、行ID、层次结构等。 在Oracle数据库中,伪列(Pseudo Columns)是一种特殊类型的…

    2024年6月26日
    00
  • PHP实现数据库容器化监控的方法。

    随着容器化技术在云计算领域的广泛应用,大量的应用程序也开始在容器中运行,其中数据库也不例外。但是容器的动态性和快速的扩展能力,也给数据库的监控和管理带来一些困难。为了解决这个问题,本文将介绍一种基于P…

    2023年5月21日
    00
  • 重蔚自留地PHP学习第46天——通过PDO连接数据库

    上篇文章学习了数组的遍历https://www.cwhello.com/10789.html 下面做些总结。 复合数据的保存:数组和对象 保存文件:对符复合数据进行序列化保存 读取文件:反序列化得到数据类型 对象反序列化必须要先加载对应的…

    2023年5月22日 我php路线
    019
  • PHP 生成唯一订单号函数

    PHP 生成唯一订单号函数 一、应用场景        有电子商城项目,需要生成订单号。当时的考虑很简单,取系统时间加上随机数,或者使用 uniqid() 方法。仔细考虑下上述方法,在顾客购买量少的情况下,订单重复的可能性…

    2018年4月28日 PHP案例操作
    0242
  • PHP中的多线程操作指南。

    PHP是一种普及广泛的脚本语言,被广泛应用于Web开发领域。在处理复杂、高并发的Web系统时,多线程操作是非常重要的技术手段。本文将为大家介绍PHP中的多线程操作指南,希望对PHP开发者有所帮助。一、为什么要使用多…

    2023年5月23日
    00
  • PHP入门指南:PHP和Spark。

    PHP是一种非常流行的服务器端编程语言,因为它简单易学、开放源代码和跨平台。目前,很多大企业都采用PHP语言来构建应用程序,例如Facebook和WordPress等。Spark是一种快速且轻量级的开发框架,可用于构建Web应用程…

    2023年5月22日
    04

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息