php数据类型分类+类型转换+类型判断

数据类型
PHP的8种数据类型
基本数据类型
-
==整形==:int/integer 系统分配四个字节存储,表示整数类型
-
==浮点型==:float/double,系统分配8个字节存储,表示小数或者整形存不下的
-
==字符串型==: string,系统根据实际长度分配,表示字符串(引号)
-
==布尔类型==:bool/boolean,表示布尔类型,只有两个值:true/false
-
==复合数据类型==:2个小类
-
==对象类型==:object,存放对象
-
==数组类型==:array,存储多个数据
-
==特殊数据类型==:2个小类
-
==资源类型==:resource,存放资源数据(PHP外部数据,如数据库,文件)
-
==空类型==:NULL,只有一个值就是NULL
PHP 字符串
==字符串是字符序列==,比如 "Hello world!"。
字符串可以是引号内的任何文本。您可以使用单引号或双引号:
实例
<?php
$x = "Hello world!";
echo $x;
echo "<br>";
$x = 'Hello world!';
echo $x;
?>
PHP 整数
整数是没有小数的数字。
整数规则:
- 整数必须有至少一个数字(0-9)
- 整数不能包含逗号或空格
- 整数不能有小数点
- 整数正负均可
- 可以用三种格式规定整数:十进制、十六进制(前缀是 0x)或八进制(前缀是 0)
在下面的例子中,我们将测试不同的数字。PHP var_dump() 会返回变量的数据类型和值:
实例
<?php
$x = 5985;
var_dump($x);
echo "<br>";
$x = -345; // 负数
var_dump($x);
echo "<br>";
$x = 0x8C; // 十六进制数
var_dump($x);
echo "<br>";
$x = 047; // 八进制数
var_dump($x);
?>
效果:
PHP 浮点数
浮点数是有小数点或指数形式的数字。
在下面的例子中,我们将测试不同的数字。PHP var_dump() 会返回变量的数据类型和值:
实例
<?php
$x = 10.365;
var_dump($x);
echo "<br>";
$x = 2.4e3;
var_dump($x);
echo "<br>";
$x = 8E-5;
var_dump($x);
?>
PHP 逻辑
逻辑是 true 或 false。
$x=true;
$y=false;
逻辑常用于条件测试。您将在本教程稍后的章节学到更多有关条件测试的知识。
PHP 数组
数组在一个变量中存储多个值。
在下面的例子中,我们将测试不同的数组。PHP var_dump() 会返回变量的数据类型和值:
实例
<?php
$cars=array("Volvo","BMW","SAAB");
var_dump($cars);
?>
PHP 对象
对象是存储数据和有关如何处理数据的信息的数据类型。
在 PHP 中,必须明确地声明对象。
首先我们必须声明对象的类。对此,我们使用 class 关键词。类是包含属性和方法的结构。
然后我们在对象类中定义数据类型,然后在该类的实例中使用此数据类型:
实例
<?php
class Car
{
var $color;
function Car($color="green") {
$this->color = $color;
}
function what_color() {
return $this->color;
}
}
?>
PHP NULL 值
特殊的 NULL 值表示变量无值。NULL 是数据类型 NULL 唯一可能的值。
NULL 值标示变量是否为空。也用于区分空字符串与空值数据库。
可以通过把值设置为 NULL,将变量清空:
实例
<?php
$x="Hello world!";
$x=null;
var_dump($x);
?>
类型转换
在很多条件下,需要指定的数据类型,需要外部数据转换成目标数据类型
在PHP中,有两种类型转换方式:
-
自动转换
-
手动转换
<?php
$a = "abc1.1";
$b = '1.1abc';
// 自动转换
echo $a+$b;
echo "<br>";
var_dump($a,$b);
echo "<hr>";
//手动转换
echo "<br>",(float)$a,"<br>",(float)$b;
$c = (float)$a;
$d = (float)$b;
echo "<br>";
echo $c,"<br>",$d;
echo "<br>";
var_dump($c,$d);
?>
效果:
类型判断
通过一组类型判断函数来判断变量,最终返回这个变量所保存数据的数据类型:是一组以is_开头后面跟类型名字的函数(相同结果为true,不同结果为false):
is_XXX(变量名)
Bool类型不能用echo来查看,可以使用 var_dump(变量1,变量2)
<?php
$a ="dsafs";
$b = 20;
$c = 20.5;
var_dump(is_string($a)); // true
echo "<hr>";
var_dump(is_int($b)); // true
echo "<hr>";
var_dump(is_float($c));// true
echo "<hr>";
echo "下面改一下:";
var_dump(is_string($b));//false 查看$b是不是字符串,显示为false,因此可以判断$b不是字符串,通过上面is_int判断出true,可以知道,$b是个整形,即为一个整数
?>
还有一组函数可以用来获取以及设定数据类型
==Gettype==(变量名): 获取类型,得到的是该类型对应的字符串
==Settype==(变量名): 设定数据类型,与强制转换不同
- 强制转换(类型)变量名,是对数据值复制的内容进行处理(不会处理实际存储的内容)
- settype会直接改变数据本身
<?php
$a = 20;
echo gettype($a); //得到a的数据类型,为integer
echo "<hr>";
echo gettype((string)$a); //强制转换a的数据类型>>string,并得到此时复制并更改得到的值,得到的类型为string
echo "<hr>";
var_dump(is_string($a));//false,可见这里并没有根本上改变a的数据类型,只是在上面更改了复制得来的a的值
echo "<hr>";
//下面将会根本上改变a的数据类型
echo settype($a, 'string'); // settype会直接改变数据本身,直接改变了a的数据类型
echo "<hr>";
var_dump(is_string($a));//判断此时a的数据类型是不是已经被改变了
?>