PHP 数据类型
1. 概述
数据是计算机操作的对象;每一个数据都有其类型,具备相同类型的数据才能进行运算操作;
数据类型是一个值得集合以及定义在这个集合上的一组操作,不同的数据类型储存的数据的种类也不同;
数据类型的使用与变量的定义是联系在一起,变量的数据类型决定了变量的储存方式和操作方法;
作为一种弱类型语言,PHP 也被称为动态类型语言;
在强类型语言之一的C语言中,一个变量只能存储一种类型的数据,并且这变量在使用之前必须声明该变量的类型;
而在PHP中,不需要事先声明,赋值即可声明,给变量赋什么值,这个变量就是什么类型
;
例子 1:
$word = "I a am teacher!";
由于 I a am teacher! 是字符串,因此变量 $word
的数据类型就是字符串类型;
$word =99;
由于99是整型,$word
的数据类型就是整型类型;
$ble=12.3;
由于12.3为浮点型,因此$ble
是浮点型;
虽然 PHP是弱类型语言,但是在某些特定场合,仍然需要正确的数据类型;
PHP的数据类型可分为4种,即标量数据类型、复合数据类型、特殊数据类型和检测数据类型;
2 标量数据类型
标量数据类型是数据结构中最基本的单元,只能储存一个数据;
PHP中的标量数据类型包括4种,即整型、浮点型、布尔类型和字符串类型;
数据类型如下表所示:
2.1 整型
整型(integer)
是数据类型中最基本的类型,整型数据类型只能是正数(包含负数);
在32位处理器上,整数的取值范围是 -2147483684到+2147483647,整型可表示为十进制、十六进制和八进制;
若使用八进制,需要在数字前加 0;若用十六进制,需要加 0x;
例子 2:
3650 //十进制整数
01223 //八进制整数
0x1223 //十六进制整数
分别输出定义的十进制、八进制和十六进制变量:
<<?php
$str1=15; //定义十进制变量
$str2=015; //定义八进制变量
$str3=0x15; //定义十六进制变量
echo "输出数字15十进制、八进制、十六进制的结果分别为:<br>";
echo "数字13十进制结果为:$str1<br>";
echo "数字13八进制结果为:$str2<br>";
echo "数字13十六进制结果为:$str3<br>";
?>
执行结果如下:
2.2 浮点型
浮点型(float)
可用来储存整数,也可保存小数,也表示实数;浮点型提供的精度比整型大,在大多数运行平台下,这种数据类型的大小为 8 个字节,近似值为 1.7E-308~1.7E+308(科学计数法);
例子 3:
-2.334
3.1415926
0.00
还有一种科学计数法,
例子 4:
3.44E1
1E+07
845.13E-4
输出圆周率的近似值,分别用了圆周率函数、传统书写格式和科学计数法,
例子 5:
<?php
echo "圆周率的三种写法:";
echo "<br>";
echo "第一种为圆周率函数:";
echo pi()."<br>";
echo "第二种传统写法:";
$str1=3.14159265359;
echo $str1."<br>";
echo "第三种为科学计数法:";
$str2=3.14159265359E-11;
echo $str2."<br>";
?>
执行结果如下:
2.3 布尔型
布尔型(boolean)
是 PHP中较为常见的数据类型之一,只有两个值:TRUE 和 FALSE;
布尔型是十分有用的数据类型,程序通过它实现了逻辑判断的功能;
其他的数据类型基本都有布尔属性:
- 整型: 为0时,其布尔属性为FALSE;为非0时,其布尔属性为TRUE;
- 浮点型: 为0.0时,其布尔属性为FALSE;为非0时,其布尔属性为TRUE;
- 字符串型: 为空字符“”或零字符串“”时,其布尔属性为FALSE;包括此外的字符串时,其布尔属性为TRUE;
- 数组型: 若不含任何元素,其布尔属性为FALSE;只要包含元素,其布尔属性为TRUE;
- 对象型、资源型: 其布尔属性永远是TRUE;
- 空型: 其布尔属性永远为FALSE;
布尔型变量可用在条件语句或循环语句的表达式中,用来帮助判断程序的执行;
例子 6:
<?php
$str1=true;
if($str=true)
{
echo "这是为真的情况:";
echo $str1."<br>";
}
else
{
$str1=false;
echo "这是为假的情况:";
echo $str1."<br>";
}
?>
2.4 字符串型
字符串是连续的字符序列,由数字、字母和符号组成;
字符串中每个字符只占有一个字符;PHP中,定义字符串有以下3中方式:
- 单引号(’)
- 双引号(")
- 定界符(<<<)
字符串型(string)
的数据需要表示在引号之间;
引号分为双引号(“)和单引号(‘),这两种引号都可表示字符串,但这两种表示方法也有一定区别;
双引号几乎包含了所有字符,但对于其中的变量,显示的是变量的值,而不是变量的变量名,有些特殊字符加上“\”
符号就可以了;
单引号内的字符会被直接显示出来,若存在变量,就会输出变量的名字而不是变量的值;
例子 7:
使用单引号和双引号分别输出同一个字符串变量,请比较输出结果:
<?php
$str="你好,欢迎访问菜鸟教程网站!";
echo "这是双引号的输出结果:<br>";
echo "$str<br>";
echo "这是单引号的输出结果:<br>";
echo '$str<br>';
?>
执行结果如下:
2.5 定界符形式
定界符采用两个相同的标识符定义字符串,用该方式定义字符串时要注意开始和结束符必须相同,还要遵循以下规则:
- 开始标识符前要有3个尖括号<<<;
- 结束标识符必须单独另起一行,并在该行第一列,前面不会有任何空格或多余字符;
- 标识符的命名也要像其他标签一样遵守PHP规则,只能包含字母、数字、下划线,并且必须以字母和下划线开头;
2.5.1 单引号形式
在定义简单的字符串时,使用单引号是一个更加合适的处理方式;若使用双引号,PHP将花费一些时间来处理字符串的转义和变量的解析;
所以定义字符串时,若没有特殊要求应进行使用单引号;
例子 8:
<?php
$b='字符串1'; //声明一个字符串变量
echo "$b"; //用引号输出
echo "<p>"; //输出段标记
echo '$b'; //用单引号输出
?>
执行结果如下:
2.5.2 双引号形式
双引号字符串赋值方式如下:
$str="这是双引号中的字符串";
若字符串用(”)定义,则支持更多种类的转义符;
例子 9:
“\n”表示换行,“\r”表示回车,“\t”表示水平制表符,“\””表示显示双引号,“\”表示反斜线,“$”表示美元标记,显示一个$符号,否则会被当做变量;
和单引号字符串一样,转义任何其他字符都会导致反斜线显示出来,使用单引号和双引号定义字符串的区别是:
在使用单引号时,程序首先不会首先去判断该字符串中是否含有变量,而是将全部内容当成字符串输出;在使用双引号时,程序首先会去判断字符串中是否含有变量,若有变量,则直接输出变量值;
3. 复合数据类型
复合数据类型将多种简单的数据类型组合在一起,储存在一种变量中,包括数组和对象两种;
复合数据类型如下表所示:
3.1 数组型(array)
数组是一组数据的集合,它把一系列数据组织起来,形成一个可操控的整体;
数组是按照 “键”与“值” 的对应关系组织数据的;
数组中可包含很多数据,如标量数据、数组、对象、资源,以及其他PHP支持的语法结构等;
数组不特意表明键值,默认情况下,数组的元素的键值为 从零开始的整数;
数组中的每个数据称为元素,元素包括索引和名称两部分,其中索引也叫键名;
元素的索引可有数字或字符串组成,元素的值可是多种数据类型;
定义数组的语法格式如下;
$ble=("value1","value2",...);
或
$ble[key]="value1";
或
$ble(key1=>value1,key2=>value2...);
参数 key 是数组的下标(索引),value1是数组下标所对应元素的值;
PHP 数组的下标既可以是数字,也可以为字符串的形式;
例子 10:
将数字和字符串作为数组的下标来创建数组,并输出对应元素的值:
<?php
$ble=array(0=>2,2=>3);
echo "数字下标输出结果:<br>";
echo $ble[0];
echo '<br>';
$ble=array('hi'=>"hello word,I a am teacher!");
echo "字符串下标输出的结果:<br>";
echo $ble['hi'];
?>
执行结果如下:
3.2 对象型
编程语言有面向过程对象和面向对象语言之分,在PHP中,用户可自由使用这两种方法;
对象就是类的实例,当一个类被实例化后,这个被生成的对象被传递给一个变量,这个变量就是对象型变量,对象型变量也属于资源型变量;
4.特殊数据类型
特殊数据类包括资源和空值两种;
数据类型表如下所示:
4.1空值(null型)
空值表示没有为变量设置任何值,null 类型是仅拥有 null 这个值类型;
这种类型用来标记变量为空,空值不区分大小写,NULL和 null 的效果是一样的;
被赋予空值的情况有以下3钟:
- 没有任何赋值
- 被赋值null
- 被unset()函数处理过的变量
例子 11:
<?php
$a;
$b=null;
$c=110;
unset($c);
echo "没有赋值的情况输出结果:<br>";
echo $a;
echo "被赋null值输出结果:<br>";
echo $b;
echo "<br>";
echo "unset()处理后输出结果:<br>";
echo $c;
echo "<br>";
?>
需要注意的是,空字符串和null是不同的;在数据库存储时会把空字符串和null区分开处理;
null 型在布尔判断时永远为FALSE,多数情况下,在声明变量时可直接先赋值为 null,如 $ble=null;
4.2 资源型
resource 类型
,即资源型,是一种十分特殊的数据类型,由专门的函数建立和使用;在使用资源时,由程序员分配;
表示PHP的扩展资源,可以为打开的文件,也可以是数据库连接,甚至可以是其他数据类型;在编程过程中,资源型几乎永远接触不到;
5. 检测数据类型
PHP 内置了检测数据行了的一系列函数,可对不同类型的数据进行检测,判断其是否属于某个类型;
检测数据类型的函数如下表所示:
例子 12:
<?php
$a=true;
$b=null;
$c=10;
$d="字符串型";
echo "检测变量是否为布尔型:<br>";
echo "is_bool($a)";
echo "<br>";
echo "检测变量是否为空值:<br>";
echo "is_null($b)";
echo "<br>";
echo "检测变量是否为整型:<br>";
echo "is_int($c)";
echo "<br>";
echo "检测变量是否为字符型:<br>";
echo "is_string($d)";
echo "<br>";
?>
结束语
若这篇文章有帮到你,给个赞,收个藏,欢迎大家留言评论;
若文章有什么错误,欢迎大家指教。