![零基础PHP学习笔记](https://wfqqreader-1252317822.image.myqcloud.com/cover/195/36710195/b_36710195.jpg)
2.3 PHP的数据类型
2.3.1 数据类型
![](https://epubservercos.yuewen.com/7E78CA/19471983208811306/epubprivate/OEBPS/Images/40266-00-044-01.jpg?sign=1739361284-RdLGTiUSavG6AJyqLhF0Ddh7eFo9PiOe-0-8db8069ab0b0944a18bd4ae8981b3b61)
PHP一共支持8种原始数据类型,其中包括四种标量类型,即integer(整型)、float/double(浮点型)、string(字符串型)和boolean(布尔型);两种复合数据类型,即array(数组)和object(对象);两种特殊数据类型,即resource(资源)与null(空)。数据类型及说明如表2.1所示。
表2.1 数据类型及说明
![](https://epubservercos.yuewen.com/7E78CA/19471983208811306/epubprivate/OEBPS/Images/044-2.jpg?sign=1739361284-RnkTrwypRyuqsRN0ce8t2Nab3GBbTGXE-0-b39bb7a96b399ade17b33eb887d4d1fe)
输出个人信息
本实例将使用echo语句输出个人信息,包括“姓名”“性别”“年龄”“身高”“体重”,代码如下:
![](https://epubservercos.yuewen.com/7E78CA/19471983208811306/epubprivate/OEBPS/Images/044-3.jpg?sign=1739361284-Z1lCiLz82Y2bSkkzLboNPPHkNNmrw4mD-0-1e0ef4cfc706de8475b4da386031d0b3)
上述代码中,包含的数据类型有字符串型、整型和浮点型,运行结果如图2.1所示。
![](https://epubservercos.yuewen.com/7E78CA/19471983208811306/epubprivate/OEBPS/Images/045-2.jpg?sign=1739361284-IDr7zboWu9OapZDt8AeE8vLkd1P27G4U-0-851345e1739fe5d4b84c03588f0fd5c2)
图2.1 个人信息输出结果
学习笔记
上述代码中,“.”是字符串连接符,“<br>”是换行标记,“echo”是PHP的输出语句,可将文本内容显示在浏览器上。常用的输出语句还有var_dump()函数和print_r()函数。
2.3.2 数据类型转换
![](https://epubservercos.yuewen.com/7E78CA/19471983208811306/epubprivate/OEBPS/Images/40266-00-045-02.jpg?sign=1739361284-KNZaApnsG7zZDOVdsP2WIIwr4LPf87CC-0-0776883e0b1f84556f85e071b1043a9e)
PHP是弱类型语言(或动态语言),不需要像C语言一样在使用变量前必须先声明变量的类型。在PHP中,变量的类型是由赋给它的值确定的。例如:
![](https://epubservercos.yuewen.com/7E78CA/19471983208811306/epubprivate/OEBPS/Images/045-3.jpg?sign=1739361284-OA6JaoNmNqSOYSfkZEzvgdBuOWT3eDjW-0-376c11182bbe359f1f2fa490de9d6ce0)
学习笔记
代码中“=”不是数学中的“等于”,它是赋值操作符,将“=”右边的值赋给“=”左边的变量。
上述代码中,变量var1为字符串型,变量var2为整型。虽然PHP不需要先声明变量的类型,但是有时仍然需要用到类型转换。PHP中的类型转换非常简单,只需在变量前加上用括号括起来的类型名称即可。类型强制转换如表2.2所示。
表2.2 类型强制转换
![](https://epubservercos.yuewen.com/7E78CA/19471983208811306/epubprivate/OEBPS/Images/046-1.jpg?sign=1739361284-2mhvlze7C2LD1H0Lm9xHIX9EnWM18zWM-0-401e6c808a112a193cbf536313450575)
学习笔记
在进行类型转换的过程中应该注意以下内容:转换为布尔型时,null、0和未赋值的变量或数组会被转换为false,其他为true。转换为整型时,布尔型的false转换为0,true转换为1;浮点型的小数部分被舍去;如果字符串型以数字开头就截取到非数字位,否则输出0。
类型转换还可以通过settype()函数来完成,该函数可以将指定的变量转换成指定的数据类型。
![](https://epubservercos.yuewen.com/7E78CA/19471983208811306/epubprivate/OEBPS/Images/046-2.jpg?sign=1739361284-jjgxqusLuc39hxBzaQIYV9yG79juZ8xL-0-921058563c107ef8b566e07ad6166356)
参数var为指定的变量,参数type为指定的类型,参数type有7个可选值,即boolean、float、integer、array、null、object和string。如果转换成功则返回true,否则返回false。
当字符串型转换为整型或浮点型时,如果字符串是以数字开头的,就会先把数字部分转换为整型,再舍去后面的字符串;如果数字中含有小数点,则会取到小数点前一位。
将指定的字符串进行类型转换
本实例使用以上两种方法将指定的字符串进行类型转换,并比较两种方法之间的不同。代码如下:
![](https://epubservercos.yuewen.com/7E78CA/19471983208811306/epubprivate/OEBPS/Images/046-3.jpg?sign=1739361284-XZU4ao6KpCB5mb2vWvzSWk7gbhF7W9Gz-0-249ec52bdbb970f745b9e2a9dd365930)
运行结果如图2.2所示。
![](https://epubservercos.yuewen.com/7E78CA/19471983208811306/epubprivate/OEBPS/Images/047-2.jpg?sign=1739361284-HZe5kgX2g63MV1eZSoZy3of03jWgpNWS-0-dc5d2454e91e88cf55fcbfd54e38ed09)
图2.2 类型转换
可以看到,使用(int)能直接输出转换后的变量类型,并且原变量不发生任何变化。而使用settype()函数返回的是布尔值,也就是true,原变量发生了改变。在实际应用中,可根据实际情况自行选择转换方式。
2.3.3 检测数据类型
![](https://epubservercos.yuewen.com/7E78CA/19471983208811306/epubprivate/OEBPS/Images/40266-00-047-02.jpg?sign=1739361284-x0DtgJ9JeBQwKILNj6C7umhz1ezsGgYG-0-0e4072a9c8611acf59a5f4965565dff0)
PHP还内置了检测数据类型的系列函数,可以对不同类型的数据进行检测,判断其是否属于某种数据类型,如果属于某种数据类型则返回true,否则返回false。检测数据类型的函数如表2.3所示。
表2.3 检测数据类型的函数
![](https://epubservercos.yuewen.com/7E78CA/19471983208811306/epubprivate/OEBPS/Images/047-3.jpg?sign=1739361284-4gBHzx8Zx3b6lWXZnK09mUv7we27Azq1-0-ae909dd8a67a092d739e35ba123e0d3d)
由于检测数据类型的函数的功能和用法都是相同的,下面使用is_numeric()函数来检测变量中的数据是否全由数字组成,从而了解并掌握is系列函数的用法。代码如下:
![](https://epubservercos.yuewen.com/7E78CA/19471983208811306/epubprivate/OEBPS/Images/048-1.jpg?sign=1739361284-OLPiyK7J5I4oEasYYE5IoOlHDJD8vaEI-0-e3652b4ed8de130b62a7b46b93b02ccf)
输出结果如下:
![](https://epubservercos.yuewen.com/7E78CA/19471983208811306/epubprivate/OEBPS/Images/048-2.jpg?sign=1739361284-yXyN6xshXWdFgLfSL3pT1cGrr9HT6s6B-0-2c5606dbfc8135062d2506d53a5ec2ba)