- 标量类型:
int、float、string、bool
- 复合类型:
array、object
- 特殊类型:
null、resource
标量类型
-
整数类型 int integer
1. 十进制:$num=998
;
2. 八进制:$num=0567
;
3. 十六进制:$0x123
;
简写 | 描述 |
---|---|
dec | 十进制 |
bin | 二进制 |
oct | 八进制 |
hex | 十六进制 |
- 进制转换:
- 十进制转换:转换的数据类型为字符串;
▪ 十进制转二进制 decbin():$num1=decbin(998)
;
▪ 十进制转八进制 decoct() :$num1=decoct(998)
;
▪ 十进制转十六进制 dechex():$num1=dechex(998)
;
▪ 模拟转换:除以进制数(2、8、16)的余数按倒叙方式重写的结果。
$a=12;
12/2=6 ..0
6/2=3 ..0
3/2=1 ..1
1/2=0 ..1
12的二进制为:1100
- 二进制转换:转换的数据类型为整型;
▪ 二进制转十进制 bindec():$n=bindec("10101110")
;
▪ 二进制转八进制 binoct():$n=binoct("10101110")
;
▪ 二进制转十六进制 binhex():$n=binhex("10101110")
;
▪ 模拟进制转换运算:将每位数乘以对应权值,将结果相加;
$a="10101110";
0*2¹,1*2²,1*2³....;
= 128 + 0 + 32 + 0 + 8 + 4 + 2 + 0;
转换结果为:174
- 八进制转换:转换的数据类型为整型;
▪ 八进制转十进制 octdec():$n=octdec("077")
;
▪ 八进制转二进制 octbin():$n=octbin("077")
;
▪ 八进制转十六进制 octhex():$n=octhex("077")
;
▪ 模拟进制转换运算:将每位数乘以对应权值,将结果相加;
//与二进制运算过程相仿
$a="077";
7*8¹,7*8²;
= 56+ 7;
转换结果为:63
十六进制转换:二进制、八进制相仿;
浮点类型 float double real
1. 小数点:$num=1.234
;
2. 科学记数:$num=1.234E3; //值为 1234; 模拟运算:1.234 * 10³
;
3. 科学记数:$num=1234E3; //值为 1234000
;
尽管结果是整数,但是也属于浮点类型。浮点类型的数值精度(模拟二进制):
$num=0.6;
0.6*2=1.2 //1
0.2*2=0.4 //0
0.4*2=0.8 //0
0.8*2=1.6 //1
0.6*2=1.2 //1
...死循环...
结果为:0.1001 1001 1001...
——————
$num2=0.625;
0.625*2=1.25 //1
0.25*2=0.5 //0
0.5*2=1 //1
结果为:0.101
- 绝大部分小数无法完整转换成二进制,而电脑的运算恰恰是由二进制构成。因此浮点数不适合用来进行比较。
$n1=6.9;
if($n1/3==2.3){ // error;
echo "ok";
}else{
echo "error";
}
// 在这种情况下通常使用固定精度判断,假设要求 3位小数
if(round($n1*1000/3)==round(2.3*1000)){ // ok;
echo "ok";
}else{
echo "error";
}
-
字符串类型 string
PHP 中有四种表示方式,而且各不相同: - 单引号:不能识别变量,方便输出完整的字符;
可以识别的转义符:\\\ \'
; - 双引号:可以自动识别变量等;
可以识别的转义符:\\\ \" \n \r \t \$
; - nowdoc (单引号)定界符:适用于输出大段的 HTML、JS代码等;
1. 结束标示符必须与开始保持一致;
2. 结束标示符必须在所在行最前面;
3. 结束标示符所在行只能写标示符和结束分号;
<?php
$str=<<< 'shuaige' //必须加上''
不解析任何转义;
$sss \\ \t \n;
<p>这里有p标签 美女 这里有p标签</p>
shuaige; //最前方
echo "<p>$str</p>";
?>
- heredoc (双引号)定界符:起始标识名可以用 " " 或者直接声明。
1. 结束标示符必须与开始保持一致;
2. 结束标示符必须在所在行最前面;
<?php
$str=<<< meinv //可直接书写,或加 ""
与双引号字符串转义相近;
<p>这里有p标签 美女 这里有p标签</p>
meinv;
echo "<p>$str</p>";
?>
-
布尔类型 bool boolean
表达了真值,可以为 TRUE 或 FALSEl,转换规则 参照。
复合类型
-
数组类型 array
数组能够在单独的变量名中存储一个或多个值。 - 在 PHP 中,数组的下标可以使用 整数 或 字符串;
1. 数字下标常被称为 "索引";
2. 字符串下标常被称为 "键名";
3. 还可创建包含一个或多个数组的多维数组; - 创建数组:
▪ 自动分配索引:
$arrs=array("美女","帅哥","美哥");
//自动分配的下标: 0、1、2
▪ 手动分配索引:
$a[0]="我才";
$a[2]="fuck";
$a[5]=111;
▪ 创建关联数组:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
// or
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";
- count() 函数:获得数组的长度;
$arrs=array("美女","帅哥","美哥");
echo count($arrs);
- 遍历数组:
▪ 遍历索引数组:
$arrs=array("美女","帅哥","美哥");
$len=count($arrs);
for($i=0;$i<$len;$i++){
echo "$arrs[$i]";
echo "<br/>";
}
▪ 遍历关联数组:
$age=array("张三"=>"998","貂蝉"=>"18","SB"=>"22");
foreach($age as $i=>$val) {
echo "Key=" . $i . ", Value=" . $val;
}
-
object 对象类型
JS 中对象除自己创建,还有内置的 window、location,标签对象;
PHP 中的对象通常均指自定义创建的对象;
<?php
//定义一个类
class girl{
public $name="美女";
public $age=22;
public function say(){
echo "hello!";
echo "我叫".$this->$name;
echo "今年".$this->age;
}
}
$v=new girl(); //创建一个对象
$v->name="小花"; //设定名称
$v->age=18; //设定年龄
$v->say(); //调用函数方法
?>
特殊类型
资源类型 resource
指对外部资源的引用,比如数据库、文件、图片;PHP 通过语法(或方式)对其进行操作。空类型 null
指计算机编程中的 "概念" 类型,表示没有数据、没有意义。
类型转换
- 自动类型转换:是弱类型语言中一个非常方便的特性。
- if(—数据—):转换为布尔类型;
- 算术运算符:转换为数值类型;
- 连接运算符:转换为字符串类型;
- 比较运算符:转换为布尔、数值类型;
- 强制类型转换:通过语法让数据转换成指定的类型。
<?php
$v1=(int)7.8;
$v2=(float)$v1;
echo $v1.",v1的数据类型为".getType($v1)."<br/>";
echo $v2.",v1的数据类型为".getType($v2);
- 相关的系统函数
类型 | 描述 |
---|---|
var_dump() | 输出变量的完整信息。 |
getType() | 获取变量的类型名称,结果返回字符。 |
setType() | 设置变量的类型:setType($num,"float")
|
isset() | 用来判断一个变量是否存在。 |
empty() | 判断一个数据是否为空。 |
unset() | 删除、销毁一个变量。 |
is_xx() | 判断一个变量是否为某种数据类型。 |
is_int()、is_float()、is_numeric()...... 等等。 |
以上详细判断规则可以 参照。