PHP数据类型
|
PHP 支持 9 种原始数据类型。
整数是集合 Z = {...,-2,-1,1,2,...} 中的某个数。整数不包括小数、分数。 (1) PHP不支持无符号整型(unsigned),即PHP中的整数都是有符号的。 (2) 整型数据所占的字节数和平台有关,通常是8个字节,可以通过输出 (3) 整型所能表示的最大数(64位系统,8字节)为9223372036854775807,可以通过输出预定义常量 (4) 整型可以用三种格式来指定:十进制、十六进制(以0x为前缀)、八进制(以0为前缀)。 浮点数是带小数部分的数字,或是指数形式。 (1) 浮点数的字节长度和平台相关,通常最大值是1.8e308,并且具有14位十进制数字的精度,小数的精度从数字的左边第一个不为0的数开始算起。 (2) 由于浮点数有精度损失,所以当我们对浮点数进行比较的时候(指含有运算的)最好不要在if条件语句中判断一个结果为浮点数的变量是否和另一个浮点数相等,比如下面的表达式 $a = 0.1; $b = 0.2; $c = 0.3; ======> ($a + $b - $c) != 0; 如果实在需要比较,那么我们可以设置一个极小值,然后判断两个浮点数的差的绝对值(求浮点数的绝对值用 这些精度损失一般发生在运算的过程中,如果我们直接比较两个不含运算的浮点数,则不会出现上述问题。例如 $a = 0.1; $b = 0.1; =====> 则$a和$b是相等的 一个字符串 string 就是由一系列的字符组成,其中每个字符等同于一个字节。这意味着 PHP 只能支持 256 的字符集,因此不支持 Unicode 。
(1) 在PHP中,既支持用单引号包围字符串也支持双引号包围字符串。但是单引号和双引号是有区别的,说明如下: 单引号:单引号不会解析$,但是执行效率高,速度快。因此建议能用单引号的地方尽量用单引号。单引号会原样输出单引号内的内容,无论有没有变量。 双引号:双引号会解析$,但执行效率比单引号要稍微低一些。如果一个字符串中有PHP变量需要解析,则应当使用双引号。 (2) 如果双引号中有比较复杂的变量,则要求使用{}括起来,否则无法解析。 $tag = "你好!"; $arr = ['name' => 'itbsl','age' => 18]; (3) heredoc使用 示例: $arr = ['name' => 'itbsl','age' => 18];
(4) nowdoc使用 nowdoc与heredoc的用法基本一致,只有两点不一样,一个是nowdoc的上面的标签需要单引号引起来,而heredoc不需要。第二点区别是nowdoc不会解析标识符内的$,也就是说不会解析标识符内的内容,即使里面有变量也不会解析,类似于单引号的用法,所以nowdoc也称作单引号标识符 (5) 在字符串中调用函数 如果在双引号包裹的字符串中有 示例: function test() {
return 'itbsl';
}
运行代码,会输出Hello,itbsl (6) 计算字符串的长度的函数是 其它类型数据也可以使用字符串处理函数,不过是先将其它类型自动转换为字符串再处理。比如用strlen(10000),函数会先将10000转换为字符串“10000”,然后在处理,所以它的长度是5. (7) 字符串可以像数组一样,通过下标来访问每个字符。但是字符串不是数组,例如一个字符串$str = 'hello';如果我们想输出字符串的前两个值,我们可以echo $str[0].$str[1];或者echo $str{0}.$str{1};(建议字符串用大括号访问,这样可以和数组区分。) 布尔型可以是 TRUE 或 FALSE。 要指定一个布尔值,使用常量 TRUE 或 FALSE。两个都不区分大小写。 布尔型通常用于条件判断。 以下值在PHP中都会被当做false对待:
PHP 中的数组实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列以及更多可能性。由于数组元素的值也可以是另一个数组,树形结构和多维数组也是允许的。 定义数组语法: //方式一: array(key => value,key2 => value2,...); 示例: //方式一
$arr = array('name' => 'itbsl','age' => 18);
最后一个数组单元之后的逗号可以省略。通常用于单行数组定义中,例如常用 array(1,2) 而不是 array(1,)。对多行数组定义通常保留最后一个逗号,这样要添加一个新单元时更方便。 注意: (1)“+”:两个数组相加,如果两个数组有相同的键,则后面相同的键不会被加进去 (2)“==”:可以判断两个数组是否含有相同的键值对 (3)“===”:可以判断,两个数组是否含有相同的键值对,而且顺序一样,而且数据类型也要一样。 资源 resource 是一种特殊变量,保存了到外部资源的一个引用。资源是通过专门的函数来建立和使用的。 特殊的 NULL 值表示一个变量没有值。NULL类型唯一可能的值就是 NULL,不区分大小写。 下列情况的变量值被认为是NULL:
其广义指的是在内存上一段有意义的区域,称作为一个对象。 自 PHP 5.4 起可用 callable类型指定回调类型 callback。 一些函数如 或 可以接受用户自定义的回调函数作为参数。回调函数不止可以是简单函数,还可以是对象的方法,包括静态类方法。 自动转换是由低到高的,boolean -> int -> float 注意:当一个整型或者浮点型数据与字符串型数据进行运算时会比较特别,举例如下 定义三个变量,分别为整型、浮点型、字符串型:$a = 4; $b = 4.5; $c = '12fff'; 当计算$d = $a + $c;时,输出$d的结果为16,输出数据类型为整型,如果将$c的值改为'eee123fff',那么输出$d的结果为4,这里可以说明,如果一个字符串和一个整型或浮点型数据进行运算,那么如果这个字符串的开头是数值型字符串,那么PHP解析器会把开头部分的数值截取出来(如果$c='12.5fff',那么会截取出12.5而不是12)和整型或者浮点型数据进行运算,结果为浮点型那么$d的类型就是浮点型,如果结果为整型那么$d的数据类型就是整形。如果这个字符串的开头不是数值型字符而是类似于eee123abc这样的字符串,虽然其中包含了数值型的字符,他也仍然是无法直接参与计算的,这种字符串会被转换成0。那么此时的$d = $a + $c,就相当于$d = $a + 0; 总结: 如果是字符串和数字进行基本运算,那么会先把字符串转换成数字,如果无法转换成数字,那么就把字符串当做0 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
