在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
类型简介PHP 支持 8 种原始数据类型。
如果想查看某个表达式的值和类型,用
上面的代码通过
如果只是想得到一个易读懂的类型的表达方式用于调试,用 如果要将一个变量强制转换为某类型,可以对其使用强制转换或者 boolean布尔类型特别注意,当转换为boolean时,以下值被认为是FALSE:
只要是对象,返回值均为TRUE。 下面这段程序能加深对boolean类型转换的理解。
integer整型要使用八进制表达,数字前必须加上0(零)。 integer值的字长可以用常量
上面程序最后一条语句,处理八进制时发生一件怪事。那是因为,如果向八进制数传递了一个非法数字(即8或9),则后面其余数字会被忽略。 如果给定的一个数超出了integer的范围,将会被解释为float。同样如果执行的运算结果超出了integer范围,也会返回float。 PHP中没有整除的运算符。1/2产生出float 0.5。值可以舍弃小数部分强制转换为integer,或者使用 手册中说,决不要将未知的分数强制转换为integer,这样有时会导致不可预料的结果。
这段程序的输出结果为7,永远不要相信浮点数! float浮点型某些数学运算会产生一个由常量 string字符串一个字符串string就是由一系列的字符组成,其中每个字符等同于一个字节。实现方式是一个由字节组成的数组再加上一个整数指明缓冲区长度。这意味着PHP只能支持256的字符集,因此不支持Unicode。那中文是怎样显示的呢?先把疑问记录下来。 字符串有4中语法表达方式:
单引号要表达一个单引号自身,需在它的前面加个反斜线(\)来转义。 但是,如果单引号包裹的字符串中只有一个反斜线,反斜线也会输出,这是为什么呢? 双引号可以对转义字符进行解析,最重要的特征是变量会被解析。 单引号、双引号都支持字符串多行录入。 heredoc结构这种结构在以往的编程中使用的较少,这里详细学习一下。 结构大致如下: 结束时所引用的标识符必须在该行的第一列,这意味着标识符不能缩进,这行除了可能有一个分号(;)外,绝对不能包含其它字符。 Heredocs结构不能用来初始化类的属性。自PHP 5.3起,此限制仅对heredoc包含变量时有效。 Heredoc 结构就象是没有使用双引号的双引号字符串,转义规则同双引号。 nowdoc结构nowdoc结构与heredoc相似,只是跟在运算符 就象heredoc结构类似于双引号字符串,nowdoc结构是类似于单引号字符串的。nowdoc中不进行解析操作。这种结构很适合用于嵌入PHP代码或其它大段文本而无需对其中的特殊字符进行转义。nowdoc结构可以用在任意的静态数据环境中,最典型的示例是用来初始化类的属性或常量。 变量解析变量解析有两种语法规则,一种是简单规则,一种是复杂规则。简单规则最常用、最方便,这里详细学习一下复杂语法规则。复杂规则语法的显著标记是用花括号包围的表达式。 复杂语法不是因为其语法复杂而得名,而是因为它可以使用复杂的表达式。 由于{无法被转义,只有$紧挨着{时才会被识别。 存取和修改可以以数组形式访问字符串,用超出字符串长度的下标写入将会拉长该字符串并以空格填充。非整数类型下标会被转换成整数。写入时只用到了赋值字符串的第一个字符。用空字符串赋值则赋给的值是NULL字符。PHP的字符串在内部是字节组成的数组。因此用花括号访问或修改字符串对多字节字符集很不安全。 字符串可以用 '.'(点)运算符连接起来,注意 '+'(加号)运算符没有这个功能。 一个布尔值boolean的TRUE被转换成string的"1"。boolean的FALSE被转换成""(空字符串)。字符串转换为数值,该字符串的开始部分决定了它的值。如果该字符串以合法的数值开始,则使用该数值。否则其值为 0(零)。 PHP的优势就体现在字符串处理的方便上,对于string的操作有很多有用的函数,可以运用各种函数,还有正则表达式。 PHP 并不特别指明字符串的编码,字符串会被按照该脚本文件相同的编码方式来编码。因此,操作文本的函数必须假定字符串是如何编码的。不幸的是,PHP关于此的函数有很多变种,关于PHP的字符串处理函数还需多加学习。 array数组PHP中的数组实际上是一个有序映射,映射是一种把values关联到keys的类型。 可以用array()语言结构来新建一个数组。它接受任意数量用逗号分隔的“键(key)=>值(value)对”。自5.4起可以使用短数组定义语法,用[]替代array()。key可以是integer或者string,value可以是任意类型。 key会有如下的强制转换和规则:
通过上面的规则可知,这段代码的输出结果如下:
如果给出方括号但没有指定键名,则取当前最大整数索引值,新的键名将是该值加上1(但是最小为0)。要删除某键值对,对其调用
对于上面这段程序,输出为:
应该始终在用字符串表示的数组索引上加上引号。例如用 foreach控制结构是专门用于数组的。它提供了一个简单的方法来遍历数组。 下面的示例程序,通过读取目录填充数组,这里涉及到几个函数的使用。
对于任意integer,float,string,boolean和resource类型,如果将一个值转换为数组,将得到一个仅有一个元素的数组,其下标为 0,该元素即为此标量的值。 object对象要创建一个新的对象 object,使用 new 语句实例化一个类。 如果将一个对象转换成对象,它将不会有任何变化。如果其它任何类型的值被转换成对象,将会创建一个内置类 stdClass 的实例。如果该值为 NULL,则新的实例为空。数组转换成对象将使键名成为属性名并具有相对应的值。对于任何其它的值,名为 scalar 的成员变量将包含该值。
上面的示例程序输出结果为:
resource资源类型资源resource是一种特殊变量,保存了到外部资源的一个引用。资源使用的所有外部资源都会被垃圾回收系统释放,很少需要手工释放内存。但是,持久数据库连接比较特殊,它们不会被垃圾回收系统销毁。 NULLNULL类型只有一个值,就是不区分大小写的常量NULL。 callback回调类型第一次接触到这个概念,有点陌生。 自PHP 5.4起可用callable类型指定回调类型callback。 手册示例程序中使用了很多 回调函数可以是简单函数、对象方法、静态类方法,回调函数的几种使用方法如下所示:
除了普通的用户自定义函数外, 类型转换PHP是弱类型语言,变量类型根据使用该变量的上下文所决定的。 (全文完) |
2022-08-17
2022-08-12
2022-11-06
2022-07-18
2022-08-15
请发表评论