列举php的8种基本数据类型及其转换运用

kano个人技术博客 php教程 1,520 次浏览 没有评论

kano技术个人博客认为在每一门程序语言中,数据类型都是重要的基础。了解一门语言中例如php基本数据类型是什么?php数据类型有几种?以及他们之间的数据类型转换都是非常有必要的,这也是学好php教程的基础。

php是弱类型的语言,php变量数据类型由值的类型决定,不同类型的值在进行计算时会进行自动类型转换,同时也可以显示转换变量的类型。如果要列举php所有的数据类型,kano个人博客可以准确的告知大家php共有8种数据类型:

{

四种标量数据类型:boolean, integer, float(double), string

两种复合数据类型:array, object

两种特殊类型:resource, null

}

kano个人博客

一、php的数据类型有哪些?


1. 布尔型

无论在什么语言中都很常用的布尔(bool)类型,php在有需要真假判断的地方,会自动的把很多值转换成布尔类型的值,以下值会被自动转换为假值:{

false  0  0.0  “”  “0”  空数组(array() [])  null  声明但无值的变量(这种变量实际为null)

}

其余的值都会转换为true

2. 整型

整数,php不支持无符号整型,范围为 -2147483648 ~ 2147483647,如果整型的计算超出了范围不会报错,而是会自动变成float类型。

整型支持8进制和16进制数:

$a = 0123;  // 83
$b = 0xaa5;  // 2725

即8进制数0开头,16进制数0x开头

3. 浮点型

php中不把浮点型分为float和double,都是统一的浮点型(一般用float类型,可能是为照顾习惯其他语言的开发人员,也有名字中含double的函数,作为float的别名存在,实际个人认为php中的float其实是双精度浮点数,double其实更符合描述一点)

一些float直接量:

$a = 1.22;  // 1.22
$b = 1.2e5;  // 120000
$c = 3e-3;  // 0.003

如上,可以用平常的小数写法或者科学计数法

php的float类型为IEEE754标准中的双精度浮点数,取值范围为 2.23x10e-308 ~ 1.79x10e308,

和其他采用此标准的语言一样,浮点数精度有限,由于取整而导致的最大相对误差为 1.11e-16,进行复合运算可能会进一步扩大误差,如果需要更高的精度,请使用BC数学函数或gmp函数

4. 字符串

另一篇 <这里链接> 文章中有详细的介绍,这里就不多赘述了。

5. array

数组类型,下面是两个数组的定义的例子:

$a = array(
    'a' => "aaaa",
    'b' => "bbbb"
);
$b = [1, 5, 3, 8];

php中的数组很灵活,可以是键为字符串的关联数组,也可以是键为数字的索引数组,关于数组会在以后用文章单独介绍一下。

6. object

下面给出一个定义对象的例子:

class Person{
    var $name;

    function say(){
        echo "doing something";
    }
}
$p = new Person();
$p->name = "Ma Yun";
echo $p->name;  // Ma Yun
$p->say();  // doing something

class关键字用来声明类,var声明其中的属性,用对象的属性和方法用“->”来连接,注意属性在使用时前面是不加“$”的。

对象也是php中很大一块内容,之后会单独成文介绍

7. Resource

资源类型,这是一种特殊的类型,它保存了到外部资源的一个引用,如:

// 打开文件,返回文件句柄
$file_handle = fopen("info.txt", "w");

// 打开目录,返回目录句柄
$dir_handle = opendir("c:/windows/fonts");

// 打开一个到mysql的链接
$link_mysql = mysqli_connect("localhost", "root", "123456");

// 创建一幅图像
$im_handle = imagecreate(100, 500);

外部资源我们无法直接得到它们的信息,但是可以通过这些函数来获取,相当于资源的一个外部接口

8. NULL

NULL值表示一个变量没有值,NULL类型唯一可能的值就是NULL

在下列情况下变量被认为是NULL:{

将变量直接赋值为NULL

声明的变量尚未被赋值

被 unset() 函数销毁的变量

}

上面就是php返回的数据类型的简介,在php手册中,你会看到一些返回参数和一些参数是mixed、number这样的类型,这些其实不是真正的类型,而是代表着可以接受不止一种类型的参数或者返回的类型不唯一:{

mixed  可以接受多种不同的类型(但不非得能接受所有类型的值)

number  可以接受integer和float

callback  可以接受回调函数作为参数(之所以把这个也算作伪类型,是因为callback真正作为参数实际上是一个函数名字符串,这里用到的是php的一个叫变量函数的特性,而不是参数的真正类型就是函数类型)

}

二、php基本数据类型转换

1. 自动类型转换

php在进行不同数据类型的查询、输出和运算的时候,或者某些地方需要判断某种php数据类型的时候,会自动进行类型转换:

布尔值参与运算时,true转化为整型1,false转化为整型0

null参与运算,转化为整型0

integer和float参与运算,把integer转成float

字符和数字参与运算,字符串转换为数字,如果带小数点转为float,不能正确转换为数字的字符串转为整数0(这一点和其他语言不一样,其他语言中都是其他基本类型转为字符串的)(另外字符串转换为数字的条件很宽松,即使是 "100aaa" 这样的字符串也能被解释为100,也就是说当一个字符串能够转换为数字时,php会获取尽可能多的字符来转换,如果在js里这种情况会转换为"NaN")

2. 强制php数据类型转换(手动类型转换)

例:

$int = 10;
$str = (string)$int;  // string '10'

像这样手动的转换类型,就是强制类型转换,允许的转换类型:

{

(int)(integer)

(bool)(boolean)

(float)(double)(real)

(string)

(array)

(object)

同一行的效果都是一样的

}

还有一些函数也可以进行类型转换:

{

intval(var)

floatval(var)

strval(var)

setType(var, type)

}

如何查看、判断、获取php数据类型的总结文章kano个人技术博客就要写到这里了,掌握了最基础的知识点,今后对我们在工作中遇到的各种包括php封装json数据类型,修改表单数据类型,获取接口、表格等数据类型,自定义返回html数据类型等等都会有莫大的帮助。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Go