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种,即整型、浮点型、布尔类型和字符串类型
数据类型如下表所示:
2021-9-17

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>";
?>

执行结果如下:
2021-9-17

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>";
?>

执行结果如下:
2021-9-17

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>';
?>

执行结果如下:
2021-9-17

2.5 定界符形式

定界符采用两个相同的标识符定义字符串,用该方式定义字符串时要注意开始和结束符必须相同,还要遵循以下规则:

  • 开始标识符前要有3个尖括号<<<;
  • 结束标识符必须单独另起一行,并在该行第一列,前面不会有任何空格或多余字符;
  • 标识符的命名也要像其他标签一样遵守PHP规则,只能包含字母、数字、下划线,并且必须以字母和下划线开头

2.5.1 单引号形式

在定义简单的字符串时,使用单引号是一个更加合适的处理方式;若使用双引号,PHP将花费一些时间来处理字符串的转义和变量的解析;
所以定义字符串时,若没有特殊要求应进行使用单引号;

例子 8:

<?php
$b='字符串1';	//声明一个字符串变量
echo "$b";	//用引号输出
echo "<p>";	//输出段标记
echo '$b';		//用单引号输出
?>

执行结果如下:
2021-96-17

2.5.2 双引号形式

双引号字符串赋值方式如下:

$str="这是双引号中的字符串";

若字符串用(”)定义,则支持更多种类的转义符;

例子 9:
“\n”表示换行,“\r”表示回车,“\t”表示水平制表符,“\””表示显示双引号,“\”表示反斜线,“$”表示美元标记,显示一个$符号,否则会被当做变量;

和单引号字符串一样,转义任何其他字符都会导致反斜线显示出来,使用单引号和双引号定义字符串的区别是:
在使用单引号时,程序首先不会首先去判断该字符串中是否含有变量,而是将全部内容当成字符串输出;在使用双引号时,程序首先会去判断字符串中是否含有变量,若有变量,则直接输出变量值;

3. 复合数据类型

复合数据类型将多种简单的数据类型组合在一起,储存在一种变量中,包括数组和对象两种;
复合数据类型如下表所示:
2021-9-18

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'];
?>

执行结果如下:
2021-9-18

3.2 对象型

编程语言有面向过程对象和面向对象语言之分,在PHP中,用户可自由使用这两种方法;
对象就是类的实例,当一个类被实例化后,这个被生成的对象被传递给一个变量,这个变量就是对象型变量,对象型变量也属于资源型变量;

4.特殊数据类型

特殊数据类包括资源和空值两种;

数据类型表如下所示:
2021-9-18

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 内置了检测数据行了的一系列函数,可对不同类型的数据进行检测,判断其是否属于某个类型;
检测数据类型的函数如下表所示:
2021-9-18
例子 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>";
?>

结束语

若这篇文章有帮到你,给个赞,收个藏,欢迎大家留言评论;
若文章有什么错误,欢迎大家指教。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值