一、数据类型分类与概述
1.标量类型
字符串:string
整数:integer,int
浮点数:double,float
布尔类型:boolean,bool
2. 复合类型
数组array
对象object
3.特殊类型
空类型null
资源类型resource:表示一种外部的可供PHP使用(操作)的资源(比如图片,数据库,文件等)
二、整型integer/int
1. 四种书写形式
10进制
$n1=123;
8进制
$n1=0123 //以0开头,只能出现0-7这8个数字
16进制
$n1=0x12A34; //以0x开头,只出现0-9,A-F
2进制
$n1=0b1011010110 //以0b开头,只出现0和1
2.进制转换
10进制转2,8,16进制:
decbin() //10转2
decoct() //10转8
dechex() //10转16
2,8,16转10进制:
bindec() //2转10
octdec() //8转10
hexdec() //16转10
三、浮点型double/float
两种书写形式
a.常规形式
$f1=0.1; // 或者1.23;123.0
b.科学计数法(带e)
$f2=1.23e3; //表示1.23乘以10的3次方
$f3=123e2; //表示一个整数(12300)
正确的比较方式
假设现在精确到小数点后4位,先乘以10000,然后转换为整型比较
if(round(n1*10000)==round(n2*10000))
{
echo "相等";
}
四、布尔型boolean
只有两个值true和false(不区分大小写)
在需要当做布尔值进行判断或比较的时候,以下数据会被当做布尔值的false:
false,0,0.0,"",null,‘0‘,空数组’
其余为true
五、字符串型string
可以使用单引号或双引号来表示
$v1=""; //空字符串
特别注意:双引号字符串中,如果出现“$”符号,则该符号后的连续字符(单词)会被识别为一个变量名
如果识别成功(即确实存在该变量),则会将该变量转换为实际内容
如果识别失败(即实际没有该变量),则会报错
要输出“$”字符可以加“\”
\$V1
六、数组类型array
$info1=array("张三丰","男",18); //新版本中,还可以写为$info1=array["张三丰","男",18];
$info2=array('name'=>"张三丰",'age'=>18,'gender'=>"男");
数组的复制:
形式为$数组变量[下标]
echo $info1[0];
print_r($info2['name']);
标签可定义预格式化的文本。被包围在
标签 元素中的文本通常会保留空格和换行符。而文本也会呈现为等宽字体。
此例演示如何使用 pre 标签 对空行和 空格 进行控制七、空类型null
只有一个值:null 不区分大小写
isset()判断结果为false
八、类型判断
gettype() //获取一个变量的类型,结果为一个变量类型的名称(字符串)
integer
string
double
settype() //设置一个变量类型
settype($v1,'string');
var_dump(); //输出变量的完整信息:类型,长度(如果需要),内容
判断是否为某种类型
is_int()/is_integer()
is_float
is_bool()
is_string()
is_array()
is_numeric() //判断是否为“数字”类型
is_object
两个特殊判断
isset() //判断变量是否存在,如果有数据,则返回true ,否则为false
empty() //判断是否为空的,如果确实为空的,则返回true ,否则为false
空的,可以理解为empty:0,0.0,"","0",false,array()
而空(null)表示完全不存在,为真空
九、类型转换
自动转换
$v1=1+"3"; //结果是4。
$v2="1"+"3"; //结果为4。只要加减乘除都是转为数字。
$v3=1.2+"2.2abc" //结果为3.4。一个字符串当做数字,就会将字符串的最前面的数字转换为数字值,如果没有就为0
$v4=1.2+"abc2.2" // 结果为1.2。
$v5=1 . "4"; //结果是14。字符串之间使用 “点” 来连接,也就是英文中的半角句号 " . "
强制转换
$v1=(int)"1";
$v2=(float)"1.23"
$v3=(string)$v1;