首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
PHP的标记风格
编码规范
常量的使用
内置常量
PHP中的变量声明
可变变量与变量的引用
变量作用域
变量的销毁
数据类型
标量类型的声明
算术运算符
字符串运算符
其它运算符
表达式
内置函数
自定义函数
函数传递参数值
函数返回值
文件包含
流程控制
循环控制结构
PHP 8的新变化1—match表达式
PHP 8的新变化2—联合类型和mixed类型
PHP 8的新变化3—参数列表中可以使用尾部逗号
实战演练1—条件分支结构综合应用
实战演练2—循环控制结构综合应用
当前位置:
首页>>
技术小册>>
PHP8入门与项目实战(2)
小册名称:PHP8入门与项目实战(2)
从PHP 4开始,PHP中的变量不需要事先声明,赋值即可声明。在使用这些数据类型前,读者需要了解它们的含义和特性。下面介绍整型、浮点型、布尔型、字符串型、数组型、对象型以及NULL和Resource两个比较特殊的类型。 3.5.1 什么是数据类型 不同的数据类型其实就是所存储数据的不同种类。PHP的不同数据类型主要包括: ·整型(integer):用来存储整数。 ·浮点型(float):用来存储实数。 ·字符串型(string):用来存储字符串。 ·布尔型(boolean):用来存储真(true)或假(false)。 ·数组型(array):用来存储一组数据。 ·对象型(object):用来存储一个类的实例。 作为弱类型语言,PHP也被称为动态类型语言。在强类型语言(例如C语言)中,一个变量只能存储一种类型的数据,并且这个变量在使用前必须声明变量类型。而在PHP中,给变量赋什么类型的值,这个变量就是什么类型,例如以下几个变量: ```php $hello = "hello world"; ``` 由于hello world是字符串,因此变量$hello的数据类型就是字符串类型。 ```php $hello = 100; ``` 同样,由于100为整型,因此$hello也就是整型。 ```php $wholeprice = 100.0; ``` 由于100.0为浮点型,因此$wholeprice就是浮点型。 由此可见,对于变量而言,如果没有定义变量的类型,则它的类型由所赋值的类型决定。 3.5.2 整型 整型是数据类型中最为基本的类型。在现有的32位运算器下,整型的取值是从-2147483648到+2147483647。整型可以表示为二进制、八进制、十进制和十六进制。 要使用二进制表达,数字前必须加上0b;要使用八进制表达,数字前必须加上0;要使用十六进制表达,数字前必须加上0x。 例如: ```php <?php $a = 1234; // 十进制数 $a = -123; // 负数 $a = 0123; // 八进制数 (等于十进制83) $a = 0x1A; // 十六进制数 (等于十进制26) $a = 0b11111111; // 二进制数字 (等于十进制255) ?> ``` 在PHP 8中,整型值的字长可以用常量PHP_INT_SIZE来表示,最大值可以用常量PHP_INT_MAX来表示,最小值可以用常量PHP_INT_MIN表示。整型数的字长和平台有关,32位平台下的最大值是2147483647,64位平台下的最大值通常大约是9223372036854775807。 3.5.3 浮点型 浮点型用于表示实数。在大多数运行平台下,这个数据类型的大小为8个字节。它的近似取值范围是2.2E-308~1.8E+308(科学记数法)。 例如: ```php -1.432 1E+07 0.0 ``` 3.5.4 布尔型 布尔型只有两个值,就是true和false。布尔型是十分有用的数据类型,程序可以通过它实现逻辑判断的功能。 其他的数据类型基本都有布尔属性: ·整型:为0时,其布尔属性为false;为非零值时,其布尔属性为true。 ·浮点型:为0.0时,其布尔属性为false;为非零值时,其布尔属性为true。 ·字符串型:为空字符串“”或者零字符串“0”时,其布尔属性为false;包含除此以外的字符串时,其布尔属性为true。 ·数组型:若不含任何元素,其布尔属性为false;只要包含元素,则其布尔属性为true。 ·对象型和资源型:其布尔属性永远为true。 ·NULL型:其布尔属性永远为false。 3.5.5 字符串型 字符串型的数据是表示在引号之间的数据。引号分为双引号“"”和单引号“'”。这两种引号可以表示字符串,但是这两种表示方法也有一定的区别。 双引号几乎可以包含所有的字符,但是在其中的变量显示变量的值,而不是变量的变量名,有些特殊字符加上“\”符号就可以了;单引号内的字符是被直接表示出来的。 下面通过一个案例来讲解整型、浮点型、布尔型和字符串型数据的使用方法和技巧。 【例3.10】 ```php <?php $int1= 2021; // 十进制整数 $int2= 01223; //八进制整数 $int3=0x1223; //十六进制整数 echo "输出整数类型的值:"; echo $int1; echo "\t"; //输出一个制表符 echo $int2; //输出659 echo "\t"; echo $int3; //输出4643 echo "<br/>"; $float1=54.66; echo $float1; //输出54.66 echo "<br/>"; echo "输出布尔型变量:"; echo (Boolean)( $int1); //将int1 整型转化为布尔型变量 echo "<br/>"; $string1="字符串类型的变量"; echo $string1; ?> ``` 本程序运行结果如图3-10所示。 ![](/uploads/images/20231207/194dc71f83f52d36b34bca8ba8dadf6f.png) 3.5.6 数组型 数组是PHP变量的集合,它按照“键”与“值”的对应关系组织数据。数组的键值既可以是整数,也可以是字符串。另外,数组在不特意表明键值的默认情况下,数组元素的键值为从零开始的整数。 在PHP中,使用list()函数或array()函数来创建数组,也可以直接进行赋值。 下面使用array()函数创建数组。 【例3.11】 ![](/uploads/images/20231207/4dadbf15ab5a319f5f445a95d473a255.png) 本程序运行结果如图3-11所示。 ![](/uploads/images/20231207/4183e202a5cda9c00782838c95acf65a.png) 【案例分析】 (1)程序中用“=>”为数组赋值,数组的下标只是存储的标识,没有任何意义,数组元素的排列以加入的先后顺序为准。 (2)本程序采用foreach()方法输出整个数组。 上面实例的语句可以简化如下。 【例3.12】 ```php <?php $arr=array(15,1E+05,"开始学习PHP基本语法了"); // 定义数组并赋值 for ($i=0;$i<3;$i++) { echo $arr[$i]."<br/>"; } ?> ``` 本程序运行结果如图3-12所示。从结果可以看出,这两种写法的运行结果相同。 ![](/uploads/images/20231207/8d0257e153715c2bb4541f5f5a1a705b.png) 另外,读者还可以对数组的元素一个一个地赋值,下面举例说明。 【例3.13】 ```php <?php $arr[0]=2021; // 对数组元素分别赋值 $arr[2]= 18.88; $arr[1]= "北风卷地白草折,胡天八月即飞雪。"; foreach ($arr as $value) { // 使用foreach()方法输出数组内容 echo $value."<br/>"; } ?> ``` 本程序运行结果如图3-13所示。 ![](/uploads/images/20231207/5ccfe35600d58ed6a2c28b11dce6c532.png) 3.5.7 对象型 对象就是类的实例。当一个类被实例化以后,这个被生成的对象被传递给一个变量,这个变量就是对象型变量。对象型变量也属于资源型变量。 3.5.8 NULL型 NULL类型是仅拥有NULL这个值的类型。这个类型用来标记一个变量为空。一个空字符串与NULL是不同的。在数据库存储时会把空字符串和NULL区分开处理。NULL型在布尔判断时永远为false。很多情况下,在声明一个变量的时候可以直接先赋值为NULL型,如$value=NULL。 3.5.9 资源类型 资源(resource)类型是十分特殊的数据类型。它表示PHP的扩展资源,可以是一个打开的文件,也可以是一个数据库连接,甚至可以是其他的数据类型。但是在编程过程中,资源类型却是几乎永远接触不到的。 3.5.10 数据类型之间的相互转换 数据从一个类型转换到另一个类型,就是数据类型转换。在PHP语言中,有两种常见的转换方式:自动数据类型转换和强制数据类型转换。 1.自动数据类型转换 这种转换方式最为常用,直接输入数据的转换类型即可。 【例3.14】 ```php <?php $a = "2"; //$a是字符串 echo $a; echo "<br/>"; $a*=2; //$a现在是一个整数 echo $a; echo "<br/>"; $a*=1.4; //$a现在是一个浮点数 echo $a; ?> ``` 程序运行结果如图3-14所示。 ![](/uploads/images/20231207/686a5e634930cf7c17c50198f75c420f.png) 2.强制数据类型转换 在PHP语言中,可以使用settype函数强制转换数据类型,基本语法如下: ```php Bool settype(var,string type) ``` type的可能值不能包含资源类型数据。如果转型成功,就返回1,否则返回0。 【例3.15】 ```php <?php $flo1=100.86; // 定义浮点型数据 echo settype($flo1,"int");// 强制转换数据为整数并输出 echo "<br/>"; echo $flo1; ?> ``` 本程序运行结果如图3-15所示。这里返回结果为1,说明浮点数100.86转型为整数100已经成功了。 ![](/uploads/images/20231207/23c39c2222cb65dfb1ae76437bad380e.png) 3.6 整型处理机制 PHP 7以前的版本里,如果向八进制数传递了一个非法数字,例如8或9,则后面其余数字会被忽略。在PHP 7及以后的版本中,将会出现编译错误。 例如下面的代码将会报错: ```php $a = 0792; // 9是无效的八进制数字 ``` 在PHP 8中,如果位移负的位置,将会产生异常,例如: ```php var_dump(1 >> -1); // ArithmeticError: Bit shift by negative number ``` 在PHP 8中,左位移如果超出位数,就会返回为0,例如: ```php var_dump(1 << 64); // int(0) ``` 而在PHP 7之前的版本中,运行结果和CPU的架构有关系,比如x86会返回1。 在PHP 7及以后的版本中,右位移如果超出位数,就会返回0或者-1,例如: ```php var_dump(1 >> 64); // int(0) var_dump(-1 >> 64); // int(-1) ```
上一篇:
变量的销毁
下一篇:
标量类型的声明
该分类下的相关小册推荐:
Laravel(10.x)从入门到精通(七)
Laravel(10.x)从入门到精通(十四)
Laravel(10.x)从入门到精通(十)
PHP8入门与项目实战(1)
PHP8入门与项目实战(7)
Laravel(10.x)从入门到精通(四)
Laravel(10.x)从入门到精通(十九)
Laravel(10.x)从入门到精通(六)
经典设计模式PHP版
Workerman高性能框架-GatewayWorker
Swoole入门教程
Laravel(10.x)从入门到精通(十一)