重蔚php学习第二十七天——php可变变量,匿名函数,伪类型
源码反码
运算符:赋值运算符,算术运算符,错误抑制符,比较运算符,逻辑运算符,三元运算符,位运算符,连接运算符,自操作运算符(在项目计算当中,非常不建议使用多个自操作一起运算) 源码反码补码 整数的原码反码和补码一致,就是本身转化成二进制 负数在内存里保存的是补码形式 负数求补码:1.先求出源码,2.源码取反(符号位不变),3.反码加1 二进制求源码: 正数的话直接二进制转十进制 负数,有两种方式:第一种先补码-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:跳出,完全终止整个循环,使循环结束 循环控制,可以使用数字来指定操作的循环层数 函数 系统函数和自定义函数 自定义函数的调用需要先定义(指的是代码区在调用函数之前已经存在该函数,这个与函数在脚本中与调用出的顺序没有关系) 被调用的函数执行结束,回到函数调用处。 函数基本要素:函数名,函数体,返回值,参数 在函数定义的时候:参数被称之为形参,形参没有值 在函数调用时传入的参数:实际参数,实参赋值给形参,所以形参是有值的 默认的参数的传递是值传递。 如果需要使用引用传值,那么需要在定义函数的时候对形式参数添加一个&符号。 作用域:全局作用域,局部作用域 全局作用域:PHP中指的是函数之外定义的变量,只能在函数之外被使用,不能在函数里使用 局部作用域:在函数内部定义的变量,只能在当前函数里面使用 如果想在函数内部使用全局变量,PHP提供了两种方式 $GLOBALS直接将外部的变量的作用域扩展,$GLOBALS针对的外部变量本身,所有的操作跟在外部操作变量本身是一致的。$GLOBALS[‘变量名’],如果在函数内部对$GLOBALS进行unset操作,会删除外部变量。 Global关键字,在函数内部定义一个同名变量,该变量指向外部变量所对应的内存空间。所以在函数内部操作global对应的变量,会导致外部变量所对应的值的变化。如果对global定义的变量进行删除,只会删除函数内部变量对应的引用,而不会改变外部变量。 返回值:return关键字 Return可以返回任何类型的数据 Return可以没有任何返回值:return;//表示当前函数执行到这个地方结束了,后面代码不在执行 什么时候使用return进行返回呢?又返回什么内容? 当我们需要函数进行返回某个数据的时候,就使用return进行相关数据的返回,如果不需要返回值的话,可以没有return。 1.可变变量 对一个变量的值再次进行变量操作 语法:$变量名 前提:该变量名对应的值,与另外一个变量的名字相同。 可变变量的原理:先将变量对应的值给取出来,然后与变量符号“$”进行合并,从而构造出一个新的变量名字,然后再对该变量进行读取 2.匿名函数 隐藏名字,没有名字的函数 语法:通过一个变量接收函数对应的地址,从而实现没有名字的函数,匿名函数。 $变量名 = function(参数列表){ //函数体 }; 匿名函数的使用 用的最多的地方,回调函数(callback),指的是当一个函数在运行的时候,需要调用其他的函数,这个其他的函数是通过函数的参数给传进去的。 定义匿名函数 如何调用匿名函数? 函数没有名字,所以不能通过函数名字进行调用。 当前所了解的只有函数的内存地址。地址保存在变量里。只能通过该变量找到该函数。 调用匿名函数 语法:$变量名(参数列表); 匿名函数的原理 注意:如果要使用变量的形式调用函数,要保证变量在赋值的时候,是被赋值的一个函数内容。 可变函数 当一个函数并不是被直接通过函数名调用,而是通过变量去调用,变量的值对应的是函数名。 原理 闭包匿名函数语法 Function 函数名(参数列表){ //外部函数函数体 Return Function(新参数列表) use(外部函数的参数列表){ //内部函数的函数体 } } 函数参数 函数参数的默认值,在定义函数参数,给形参指定一个默认的值。 参数默认值的应用 为了保证函数的健壮性。有一些不是很重要非要用户填写的参数,就会使用默认值。 调用带默认值的函数,跟正常调用一样,只是在有默认值参数地方,可以选择不输入实际参数 函数参数默认值定义和调用原理 3.伪类型 在返回或者对某个变量要求指定类型PHP超级全局变量,通常见得最多的是函数的返回值类型。 Mixed:混合的,不确定具体类型 连接数据库mysql_connect,连接成功返回一个资源,连接失败返回一个false Number:数字的,返回一个数值 Callback:回调函数,这个通常是用在函数的参数列表 当某个函数执行的时候,需要调用一个额外的函数来实现。这个额外的函数就是回调函数。 Void:空,指的是没有返回值,或者函数调用不需要参数 当我们去查看操作手册的时候,能够理解函数的一些信息 4.数据类型转换 指的是将一个数据(值)的类型进行改变,转换成其他类型。 在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:判断变量是否是数值(包含整型和浮点型) 什么时候需要判断数据类型? PHP不相信任何外来数据。凡是不是PHP自定义的变量,PHP都不相信。所有外来数据,PHP都需要对其进行判断。 如何获得数据类型? PHP使用gettype函数能够获得一个变量的数据类型 这里不能使用var_dump去打印gettype返回的结果,因为得到的结果是一个字符串 如何改变数据类型? Php提供了一个函数settype,设定一个变量的类型。 注意:在改变变量的数据类型的时候,会对其指向的内存空间的值进行数据类型转换,从而导致数据值的改变。 强制数据类型转换 使用某种手段强制改变某个数据的数据类型。 语法:(目标数据类型)变量 改变的是变量值本身,不会去变量值对应的内存空间进行改变,相当于是copy了一份内存空间的值,然后对其进行改变。 Int: Integer:转化成整型 Bool: Boolean:转化成布尔型 Float:转化成浮点型 String:转换成字符串型 Array:转化成数组 Object:转化成对象 上面的各种强制转化与使用settype效果是一样的,区别在于settype能够提供很多种选择,可以随意的转换成需要的数据类型。 不管是系统自动转化也好,还是强制转化也好。本质都将变量的值进行类型改变。因为变量没有数据类型,变量的值有数据类型。 如何实现公共代码的重用?不要每次都写。 (编辑:海南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |