复习PHP-语言参考-类型

1. PHP内置类型有

四种标量类型 bool int float(或称double) string

两种复合类型 array object

两种特殊类型 resource NULL

2.相关命令

查看类型 gettype

判断类型 is_xxx

强制转换类型 (xxx)变量  或者settype

获取变量的当前类型值

xxxval();

如intval,boolval,floatval,strval

is_numeric检测变量是否为数字或数字字符串

3.详细介绍

-------------------------------------

bool:TRUE or FALSE

以下值被认为是FALSE

bool false

int 0

float 0.0

string “” or “0”

arrray []

NULL null或尚未被赋值的变量

从空标记生成的SimpleXML对象

其他都是TRUE(包括任何source资源)

注意:-1和其他非零值(不论正负都为TRUE)

所以可扩展为  -1>false为真

--------------------------------------

integer:集合{…-2,-1,0,1,2}中的一个数

二进制,十六进制,八进制均为int类型标量

注意:二进制表达的integer在5.4起可用

二进制 0b

八进制 0

十六进制 0x

注意:32位电脑的int占4个字节,每个字节8个单元,所以最大值为21亿左右,64位为9223372036854775807,计算方式为最大的正数是 01..1 后面31个1, 结果是 2147483647,最小的负数是 10...0后面31个0, 计算方法是用补码, 结果是 -2147483648, 而0xffffffff 是 -1

注意:如果向八进制传递一个非法数字(8,9)则本位以及后面的位将会被忽略(如012954)的八进制值为012,十进制值为10

注意:如果INT溢出将会被自动转换为float类型

注意:不要将未知的分数强制转换为int,不然结果将会不可预料

如(int) ( (0.1+0.7) * 10 )的值为7,而不是8.

--------------------------------------

float:浮点的形式有以下几种

LNUM          [0-9]+
DNUM          ([0-9]*[\.]{LNUM}) | ({LNUM}[\.][0-9]*)
EXPONENT_DNUM [+-]?(({LNUM} | {DNUM}) [eE][+-]? {LNUM})

浮点的长度与平台设置有关

注意:永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。因为只要浮点数换算成二进制是无穷尽的,那么它的实际值是略小于它本身的,如0.1实际值为0.0999999…(二进制为0.000 1100 1100 1100 …),如何要比较两浮点数是否相等,可以控制精度为小数点后XX位 如0.000001,然后将两数相减和此极小值比较,如果小于此值,则认为在XXX位精度的情况下,这两个浮点数是相等的。

注意:有时数学运算的结果为NaN,它代表任何不同值,所以不能用于与其他任何类型值比较(包括自身),可用is_nan判断。

注意:INF是无穷大的意思。

--------------------------------------

string:邮一系列的字符组成,每个字符占一个字节,因此PHP只支持256的字符集,不支持unicode。

表示方式为‘’,“”,<<<‘eof’xxxeof(xxx中的变量不会被解析),<<<“eof”xxxeof(xxx中的变量可以被解析).

提示:string最大可以达到2GB。

提示:PHP_EOL代表换行。

提示:string中的变量最好用{}括起来。

{}可扩展至类静态变量:{${beers::$ale}},{${beers::softdrink}}

提示:PHP 的字符串在内部是字节组成的数组。因此string可以被当作Array处理,每一个字符可当作一个元素。

注意:用超出字符串长度的下标写入将会拉长该字符串并以空格填充。 如$a = "abc“ 如果操作$a[4] = “d”,那么字符串长度将会被扩展到5,下标3的位置将会以空格填充。

注意:下标必须为整数或可转换为整数的字符串。

大部分PHP值(除了resource)可以转变成STRING,即串行化,可用serialize来实现。

--------------------------------------

array:是一个有序映射。

5.4起用[]代替array()。

键名如果是合法整型值的字符串,会被转换,“8”=8,但“08”不能被转换,因为它不是合法的十进制。

浮点键名会被转换为整型,但小数会被舍去。

布尔键名会被转换为0,1。

null键名被转换为“”。

数组和对象不能成为键名。

如果出现相同的键名,则后面的会覆盖前面的。

新建,修改,删除(unset)。

--------------------------------------

object:新建一个对象 new abc;

将其他任何类型的值转换为对象,将会产生一个public scalar属性,值为变量的值。(数组转换为obj将会得到与数组结构相同的,元素都为public的对象)

--------------------------------------

resource:一种特殊变量,保存到外部资源的一个引用。

常用函数为:get_resource_type取得资源类型。

由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此将其它类型的值转换为资源没有意义。

自动回收,所以不必手动销毁,但持久数据库连接比较特殊,它不会被回收掉。

--------------------------------------

NULL:表示NULL。

被赋值为NULL,尚未被赋值,UNSET 都会得到NULL。

使用 (unset) $var 将一个变量转换为 null 将不会删除该变量或 unset 其值。仅是返回 NULL 值而已。

--------------------------------------

callback回调类型:call_user_func call_user_func_array 实际运用中才得知。

--------------------------------------

字符与ascii之间的转换可用函数(C++可直接将字符转换为INT取得节ascii码)

ord,chr

4.类型转换的判别

进制转换的函数为:base_convert(值,当前进制,目标进制)

提示:如果字符串转进制则当前进制和目标进制都一样 如base_convert("0b11",2,2);则可转换成二进制,但需要理解的是,转换后的类型仍然是string,但可以进行位运算了。

如果有一个是float,则运算都转为float。否则都是int

注意:转换为二进制(binary)

你可能感兴趣的:(字符串,double,source,false)