PHP 支持 8 种原始数据类型。
四种标量类型:
- boolean(布尔型)
- integer(整型)
- float(浮点型,也称作 double)
- string(字符串)
两种复合类型: - array(数组)
- object(对象)
最后是两种特殊类型: - resource(资源)
- NULL(无类型)
类型检测
- var_dump() 函数可以查看表达式的值和类型
- gettype() 函数用于检测变量类型
- is_ 加类型,如 is_int(),is_array() 等,判断变量是否为该类型
在目录 /home/project 创建 test.php,并编辑内容
<?php
$a = TRUE;
$b = "foo";
$c = 0.1;
$d = 12;
if (is_string($b)) {
echo "$b 是字符串".PHP_EOL;
}
if (is_int($c)) {
echo "$c 是整型".PHP_EOL;
}
var_dump($a);
var_dump($b);
echo gettype($c).PHP_EOL;
echo gettype($d);
执行
结果输出
foo 是字符串
bool(true)
string(3) "foo"
double
integer
Boolean 布尔类型
布尔类型表达了真值,可以为 TRUE 或 FALSE,不区分大小写。
<?php
$a = True;
$b = False;
var_dump($a);// bool(true)
var_dump($b);// bool(false)
运算符返回 boolean 类型的结果:
<?php
// == 是一个操作符,它检测两个变量值是否相等,并返回一个布尔值
if ($a == "say_hello") {
echo "Hello World";
}
// $b 的值是否为 true:
if ($res) {
echo "This is true";
}
注意当下列情况转换为 Boolean 时,其值为 FALSE
- 布尔值 FALSE 本身
- 整型值 0(零)
- 浮点型值 0.0(零)
- 空字符串,以及字符串 “0”
- 不包括任何元素的数组
- 特殊类型 NULL(包括尚未赋值的变量)
- 从空标记生成的 SimpleXML 对象
在目录 /home/project 编辑 test.php
<?php
$a = '';
$b = 0;
$c = false;
$d = "0";
var_dump($a == $b);
var_dump($b == $d);
var_dump($a == $c);
var_dump($b == $c);
执行
Integer 整型
整型值可以使用十进制,十六进制,八进制或二进制表示,前面可以加上可选的符号(- 或者 +)。
注意:要使用八进制表达,数字前必须加上 0。要使用十六进制表达,数字前必须加上 0x。要使用二进制表达,数字前必须加上 0b。
<?php
$a = 1234; // 十进制数
$b = -123; // 负数
$c = 0123; // 八进制数 (等于十进制 83)
$d = 0x1A; // 十六进制数 (等于十进制 26)
整数溢出
如果给定的一个数超出了 integer 的范围,将会被解释为 float。同样如果执行的运算结果超出了 integer 范围,也会返回 float。
在目录 /home/project 编辑 test.php
<?php
$a = 123445566;
$b = 9223372036854775807;
$c = 9223372036854775808;
$d = 50000000000000 * 1000000;
var_dump($a);
var_dump($b);
var_dump($c);
var_dump($d);
执行
Float 浮点型
浮点型(也叫浮点数 float,双精度数 double 或实数 real)
<?php
$a = 1.234;
$b = 1.2e3;
$c = 7E-10;
浮点数的字长和平台相关,通常最大值是 1.8e308 并具有 14 位十进制数字的精度(64 位 IEEE 格式)
String 字符串类型
一个字符串 string 就是由一系列的字符组成,其中每个字符等同于一个字节,PHP 中有 4 中表达方式
- 单引号
单引号内特殊字符和变量不会被解析
<?php
$a = 'Hello';
echo '$a \n World';//$a \n World
- 双引号
双引号内的特殊字符和变量会被解析。
<?php
$a = 'Hello';
/**
* Hello
* World
*/
echo "$a \n World";
- Heredoc
Heredoc 类似与双引号,内部转义字符和变量可以被解析,句法结构为
<<<EOT
字符串
EOT;
其中 EOT 为标识符,可以自定义,但是首尾标识符必须相同。开始标识符 EOT 后需换行,结束标识符 EOT 必须独占一行,且前面不许有空格。
<?php
$a ='Hello' ;
echo <<<EOT
$a Hello
EOT;
字符串函数
- strlen()函数的作用是:返回字符串的长度。
- strwordcount()函数的作用是:返回字符串中的字数
- strrev()函数的作用是:反转字符串
- strpos()函数的作用是:搜索字符串中的文本
- str_replace()函数的作用是:替换字符串中的文本
Nowdoc
Nowdoc 类似于单引号,无法解析转移字符和变量。句法结构类似 Heredoc,但是需要在开始标识符加上单引号。
<?php
$a ='Hello' ;
echo <<<'EOD'//和 Heredoc 不同点
$a Hello
EOD;
编辑 test.php
<?php
$a = 'Hello';
$b = '$a World';
$c = "ShiYanLou";
$c = <<<EOT
$a \n World
EOT;
$d = <<<'EOT'
$a \n $c
EOT;
var_dump($b);
var_dump($c);
var_dump($d);
执行 php test.php