PHP变量的类型
PHP支持八种原始类型---var_dump()
- 四种标量
布尔型(boolean)
整形(integer)
浮点型(float)(读点书,也作double)
字符串(String)
- 两种复合类型
数组(Array)
对象(Object)
- 两种特殊类型
资源(Resource)
NULL
布尔值
布尔值表示为:true/false
当其他类型转换为boolean类型时,某些值也被认为是false(假):
- 布尔值false
- 整型值 0
- 浮点型 0.0
- 空白字符串和字符串”0”
- 空数组
- NULL
- 其它的值都被认为是true(真)
其他的类型也可以表示为布尔值比如:
<?php
//boolean false
//int 0
//float 0.0,0.00
//String "","0"
//array 空数组
//NULL
$boolean = "0";
if($boolean){
echo "这是真值";
}else{
echo "这是假值";
}
?>
输出:这是假值
整型和浮点型
整型值可以用十进制,十六进制或八进制符号指定,前面可以加上可选的符号(- 或者 +)代表数值的正负。
<?php
$a = 1234; // 十进制数
$a = -123; // 一个负数
$a = 0123; // 八进制数(等于十进制的 83)
$a = 0x1A; // 十六进制数(等于十进制的 26)
?>
整数值有最大的使用范围,这与平台有关,对于32位系统而言范围:-2147483648~2147483647,PHP不支持无符号整数。如果超出了则变成了float型。
<?php
$large_number=2147483648;
var_dump($large_number);
?>
输出:float(2147483648)
浮点数(也叫双精度数或实数)是包含小数部分的数。通常用来表示整数无法表示的数据,如金钱值、距离值、速度值等。浮点数的字长和平台相关,尽管通常最大值是 1.8e308 并具有 14 位十进制数字的精度。
可以用以下任何语法定义:
<?php
$a = 1.234;
$a = 1.2e3; //相当于1.2*103即1200
$a = 7E-10; //相当于7*10-10即0.0000000007
?>
字符串类型
字符串声明
- 在php中,一个字符和多个字符都是字符串
- 声明一个字符串必须使用单引号或双引号引起来
- 字符串是没有长度限制的
- 在单引号中可以使用双引号,在双引号中也可以使用单引号
- 在单引号中不可以再使用单引号,在双引号中也不可以使用双引号
- 可以使用转义字符 \
<?php
$a="hello";
$b='hello';
?>
单引号和双引号的区别
- 在双引号可以解析变量,在单引号中不能解析变量(变量可以加{}解析)
- 在双引号中可以使用转义字符 \n \r \t ,在单引号中不能使用转义字符(在单引号中只能转移单引号自己和转义符号本身)
\n 换行
\r 回车
\t 水平制表符
\\ 反斜线
\$ 美元符号
......
定界符号声明字符串
- 使用<<<小于号
- 在开始的定界符(自定义的字符串中)一定要左边挨着<<<,写完定界的字符串,一定要,直接回车(空格都不可以)
- 在结尾的字符串定界中,一定要顶头写,和开始的字符串要一致,并且回车
- 使用单引号在开始的定界符中,将支持双引号的功能改为单引号的功能
<?php
$int=5;
$a=<<<hello
black $int red \$ a
hello;
$b=<<<'word'
black $int red \$ a
word;
echo $a;
echo "</br>";
echo $b;
?>
输出:black 5 red $ a
black $int red \$ a
变量之间的类型转换
数据类型自动转换的关系
graph LR
A(布尔值与NULL)-->B(整型Integer)
c(字符串String)-->B
A-->D(浮点型)
c-->D
数据类型强制转换
- PHP 中的类型强制转换和 C 中的非常像:在要转换的变量之前加上用括号括起来的目标类型
- 允许的强制转换有:
- (int),(integer)-转换成整型
- (bool),(boolean)-转换成布尔型
- (float),(double),(real)-转换成浮点型
- (string)-转换成字符串
- (array)-转换成数组
- (object)-转换成对象
- 注意在括号内允许有空格和制表符,为了将一个变量还原为字符串,还可以将变量放置在双引号中
变量类型的测试函数
- is_bool():判断是否是布尔型
- is_int()、is_integer()、is_long():判断是否为整型
- is_float()、is_double()、is_real():判断是否为浮点型
- is_string():判断是否为字符串
- is_array():判断是否为数组
- is_object():判断是否为对象
- is_resource():判断是否为资源类型
- is_null():判断是否为null
- is_scalar():判断是否为标量
- is_numberic():判断是否是任何类型的数字和数字字符串
- is_callable():判断是否是有效的函数名
- bool settype(mixed var,string type) :将变量var的类型设置为type