PHP 支持 8 种原始数据类型:
四种标量类型: boolean (布尔型)、 integer (整型)、 float (浮点型,也称作 double )、 string (字符串)
两种复合类型:array (数组)、object (对象)
最后是两种特殊类型: resource (资源)、NULL (无类型)
为了确保代码的易读性,还有一些伪类型:mixed (混合类型)、number (数字类型)、callback (回调类型)、以及伪变量 $...。
可能还会读到一些关于“双精度(double)”类型的参考。实际上 double 和 float 是相同的,由于一些历史的原因,这两个名称同时存在。
变量的类型通常不是由程序员设定的,确切地说,是由 PHP 根据该变量使用的上下文在运行时决定的;
一、Boolean 布尔类型
这是最简单的类型。 boolean 表达了真值,可以为 TRUE 或 FALSE 。
语法:要指定一个布尔值,使用关键字 TRUE 或 FALSE 。两个都不区分大小写。
- <?php
- $fujieace = True ;
二、Integer 整型
一个 integer 是集合 ? = {..., -2, -1, 0, 1, 2, ...} 中的一个数。
语法:整型值可以使用十进制,十六进制,八进制或二进制表示,前面可以加上可选的符号(- 或者 +)。
二进制表达的 integer 自 PHP 5.4.0 起可用。
要使用八进制表达,数字前必须加上 0(零)。要使用十六进制表达,数字前必须加上 0x。要使用二进制表达,数字前必须加上 0b。
- <?php
- $a = 1234 ; // 十进制数
- $a = - 123 ; // 负数
- $a = 0123 ; // 八进制数 (等于十进制 83)
- $a = 0x1A ; // 十六进制数 (等于十进制 26)
三、Float 浮点型
浮点型(也叫浮点数 float,双精度数 double 或实数 real)可以用以下任一语法定义:
- <?php
- $a = 1.234 ;
- $b = 1.2e3 ;
- $c = 7E-10 ;
浮点数的字长和平台相关,尽管通常最大值是 1.8e308 并具有 14 位十进制数字的精度(64 位 IEEE 格式)。
四、String 字符串
一个字符串 string 就是由一系列的字符组成,其中每个字符等同于一个字节。这意味着 PHP 只能支持 256 的字符集,因此不支持 Unicode 。 string 最大可以达到 2GB。
语法:一个字符串可以用 4 种方式表达:
1. 单引号
2. 双引号
3. heredoc 语法结构 <<<***
4. nowdoc 语法结构(自 PHP 5.3.0 起) <<<'***'
单引号只转义两个字符: \\ 和 \';
双引号转义字符 序列 含义 \n 换行(ASCII 字符集中的 LF 或 0x0A (10)) \r 回车(ASCII 字符集中的 CR 或 0x0D (13)) \t 水平制表符(ASCII 字符集中的 HT 或 0x09 (9)) \v 垂直制表符(ASCII 字符集中的 VT 或 0x0B (11))(自 PHP 5.2.5 起) \e Escape(ASCII 字符集中的 ESC 或 0x1B (27))(自 PHP 5.4.0 起) \f 换页(ASCII 字符集中的 FF 或 0x0C (12))(自 PHP 5.2.5 起) \\ 反斜线 \$ 美元标记 \" 双引号 \[0-7]{1,3} 符合该正则表达式序列的是一个以八进制方式来表达的字符 \x[0-9A-Fa-f]{1,2} 符合该正则表达式序列的是一个以十六进制方式来表达的字符
- <?php
- //一、单引号
- echo 'this is a simple string' ;
- //二、双引号
- echo "this is a simple string \n \\ " ;
- // 三、Heredoc 结构;heredoc 结构中单引号不用被转义,变量将被替换;
- $name='付杰博客';
- echo <<<EOT
- My name is "$name" I am printing some .
- Now, I am printing some .
- EOT;
- //四、Nowdoc 结构; nowdoc 中不进行任何解析操作。
- echo <<<'EOT'
- My name is "$name". I am printing some.
- Now, I am printing some "$name".
- EOT;
- ?>
五、Array 数组
PHP 中的 数组 实际上是一个有序映射。映射是一种把 values关联到 keys 的类型。此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列以及更多可能性。由于数组元素的值也可以是另一个数组,树形结构和多维数组也是允许的。
解释这些结构超出了本手册的范围,但对于每种结构至少会提供一个例子。要得到这些结构的更多信息,建议参考有关此广阔主题的其它著作。
语法:定义数组 array()
可以用 array() 语言结构来新建一个数组。它接受任意数量用逗号分隔的 键(key) => 值(value) 对。
array( key => value
, ...
)// 键(key)可是是一个整数 integer 或字符串 string
// 值(value)可以是任意类型的值
- $array = array(
- "foo" => "bar" ,
- "bar" => "foo" ,
- );
- // 自 PHP 5.4 起
- $array = [
- "foo" => "bar" ,
- "bar" => "foo" ,
- ];
六、Object 对象
对象初始化:要创建一个新的对象 object ,使用 new 语句实例化一个类:
- <?php
- class foo
- {
- }
- $bar = new foo ;
- var_dump($bar );//object(foo)#1 (0) { }
- $obj = (object) 'ciao' ;
- var_dump($obj);// object(stdClass)#2 (1) { ["scalar"]=> string(4) "ciao" }
七、Resource 资源类型
资源 resource 是一种特殊变量,保存了到外部资源的一个引用。资源是通过专门的函数来建立和使用的。
转换为资源:由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此将其它类型的值转换为资源没有意义。
八、NULL
特殊的 NULL 值表示一个变量没有值。 NULL 类型唯一可能的值就是 NULL 。
在下列情况下一个变量被认为是 NULL :
1. 被赋值为 NULL 。 2. 尚未被赋值。 3. 被 unset() 。
- <?php
- $var = NULL ;
2016年12月28日 19:48:29 沙发
PHP类型之间允许的强制转换有:
1. (int), (integer) – 转换为整形 integer
2. (bool), (boolean) – 转换为布尔类型 boolean
3. (float), (double), (real) – 转换为浮点型 float
4. (string) – 转换为字符串 string
5. (array) – 转换为数组 array
6. (object) – 转换为对象 object
7. (unset) – 转换为 NULL (PHP 5以后)