本文转发来自:https://blog.csdn.net/KH_FC/article/details/115415323

PHP数据类型可支持以下8种类型:

类型 说明
string 字符串
boolean 布尔值
integer 整型
float 浮点型
array 数组
object 对象
resource 资源
NULL NULL

1. 基本类型

基本类型也就是最基础的数据类型,用来表示比较简单、直接性的数据,基本类型有以下几个数据类型:

类型 说明
boolean(布尔值) 其值只有两个,一个是true,一个是false。多数用来判断事物的真假
string(字符串) 其值包含计算机所能够显示的所有字符的集合,多数用来做说明性的字符
integer(整型) 只包含整数,包含正整数和负整数
float(浮点型) 包含整数和小数

1.1 boolean(布尔值)

布尔值由truefalse这两个值,所以是PHP种最简单的一种数据类型,也是使用最多的一个数据类型,而且布尔值的两个值可以直接使用,不区分大小写,在设置变量时可以直接将布尔值中的两个值进行赋值就可以,通常是配合流程控制进行使用的。

示例1】常规设置变量为布尔值

<?php
$a = true; \\设置变量 a 的值为真
$b = false; \\设置变量 b 的值为假
?>

示例2】与流程控制语句配合使用,判断事物真假

<?php
$a = true;
$b = false;
if ($a == $b) {
echo "值相等"; #结果为真输出
}else{
echo "值不相等"; #结果为假输出
}
?>

输出结果为:值不相等

示例3】使用运算符返回布尔值

<?php
$name = "张三";
if ($name == "张三"){
echo "他的名字是$name"; #如果判断运算结果为真则输出
}
?>

输出结果为:他的名字是张三

示例4】常用语句

<?php
if ($a = true ){
var_dump($a);
}
?>

输出结果为:bool(true),上面出现的 var_dump()是用来打印输出结果并带上数据类型

上面那种判断变量真假的方式可直接写成下面简单的方法:

<?php
if ($a) {
var_dump($a);
}
?>

注意】上面$a变量我的赋值没有写,不给变量复制,变量默认为NULL

1.2 整型

整型数值只包含整数,其中整型也可以使用八进制、十六进制、二进制表上,负数时前面可加可选符号-+

示例1】八进制的整数,在表示数字前需要在数字前面加0

<?php
$a = 0456;
var_dump($a);
?>

输出结果为:int(302),八进制456转化为十进制是302

示例2】十六进制的整数,在表示数字前需要在数字前面加0x

<?php
$a = 0x456;
var_dump($a);
?>

输出结果为:int(1110),十六进制456转化为十进制是1110

示例3】二进制的整数,在表示数字前需要在数字前加0b

<?php
$a = 0b1101;
var_dump($a);
?>

输出结果为:int(13),二进制数1101转换为十进制是13

示例4】打印负数,只需正数前面加-即可

<?php
$a = -100;
var_dump($a);
?>

输出结果不变,显示int(-100)

番外】整数一般最大值是二十亿,也就是32位字符,64位平台最大值是9E18,查看支持的最大值和最小值可以采用PHP_INT_MAXPHP_INT_MIN进行查看

示例1】查看支持最大的整数

<?php
var_dump(PHP_INT_MAX);
?>

我这输出结果是int(9223372036854775807),你们自己算算吧是多少

示例2】查看支持最小的整数,这个只有PHP7.0版本之后支持哟

<?php
var_dump(PHP_INT_MIN);
?>

这个最小整数的输出值就不用我说了吧,算了给你们看看结果吧int(-9223372036854775808)

注意】在输出八进制时,如果出现超过8的数值,PHP7.0版本之前会自动忽略,但是7.0之后会直接报错哦

示例

<?php
$a = 01239;
var_dump($a);
?>

报错信息如下:



注意】如果给出的整数值超出了整数范围,会被解释为浮点数,同样如果运算结果超出了整数范围,也会解释为浮点数哟!

示例】运算结果超出整数范围

<?PHP
$num1 = 45678901111;
$num2 = 89099899111;
var_dump($num1 * $num2);
?>

输出结果为:float(4.0699854804914E+21)

1.3 浮点型

浮点型整数也叫实数,表示方式可以采用正常格式和科学技术法格式进行

示例1】正常格式

<?php
$a = 1.234;
var_dump($a);
?>

输出结果为:float(1.234)

示例2】科学技术格式

<?php
$a = 1.2e3;
$b = 8E - 10;
var_dump($a);
var_dump($b);
?>

输出结果为:float(1200) float(8.0E-10)

1.4 字符串

字符串就是由一系列的字符组成,一个字符就是一个字节,通过单引号、双引号、Heredoc语法结构和Nowdoc语法结构定义字符串。

  1. 单引号

    采用单引号定义字符串就是使用单引号把字符包围起来,如果想要输出单引号需要在单引号添加转义符\,如果是在结尾想输出反斜杠就需要在字符前添加转义符\\,如果在其他字符前面添加转义符\或者\\会直接输出转义符。

    示例1】正常输出单行字符串
<?php
$a = '我是一个字符串';
var_dump($a);
?>

输出结果为:string(21) "我是一个字符串"

示例2】正常输出多行字符串

<?php
$a = '我是多行
字符串';
var_dump($a);
?>

输出结果为:tring(23) "我是多行 字符串"

示例3】在字符串中显示单引号

<?php
$a = 'I like \'PHP\'';
var_dump($a);
?>

输出结果为:string(12) "I like 'PHP'"

示例4】在字符串中输出反斜杠,多用于文件路径

<?php
$a = 'D:\\php\index.php';
var_dump($a);
?>

输出结果为:string(16) "D:\php\index.php"

注意】在使用单引号进行定义字符时,如果字符中含有变量,变量将不会被解释,但是双引号定义字符串时变量可以被解释的

示例】在字符串中引用变量

<?php
$a = '张三';
$b = '我叫$a';
$c = "我叫$a";
var_dump($b);
var_dump($c);
?>

输出结果为:$b的返回结果为string(8) "我叫$a"$c的返回结果为string(12) "我叫张三"

2. 双引号

采用双引号定义字符串,将要定义的字符型采用"", 使用双引号定义字符串时,如果字符串中存在变量则变量将会被解释,不会显示变量名,PHP将对这些特殊字符串进行解析,这些字符串都要通过转义符来显示。

转义符列表:

转义字符 意义 ASCLL码值(十进制)
\a 响铃(BEL) 007
\b 退格(BS),将当前位置移到前一列 008
\f 换页(FF),将当前位置移到下页开头 012
\n 换行(LF),将当前位置移到下一行开头 010
\r 回车(CR),将当前位置移动到本行开头 013
\t 水平制表(HT)(跳到下一个TAB位置) 009
\v 垂直制表(TV) 011
\|代表一个反斜杠字符"\" 092
\' 代表一个单引号(撇号)字符 039
\" 代表一个双引号字符 034
\? 代表一个问好 063
\0 空字符(NULL:) 000
\ddd 1到3位八进制数所代表的任意字符 三位八进制
\xhh 1到2位十六进制所代表的任意字符 二位十六进制
注意】要注意\/,此处时不可替换的
示例1】双引号定义字符串时输出$符号
<?php
echo "\$";
?>

示例2】双引号定义字符串时输出双引号

<?php
echo " My Name is \"李明\"";
?>

输出结果为:My Name is "李明"

3. Heredoc语法结构

采用Heredoc结构<<<定义字符串,在使用提示符定义字符串时,要在提示符后面定义一个标识符,然后定义新的一行,新行中为你要显示的字符串,最后要以标识符进行结尾,标识符定义必须遵循PHP规则,只能包含大小写、数字和下划线,但是不能将下划线作为开头使用

示例

<?php
$str = <<<test
My name is "zhangsan"
加入CSDN已经一周年了
test;
?>

输出结果为:My name is "zhangsan" 加入CSDN已经一周年了

注意】在使用Heredoc语法结构定义字符串时,字符串中如果存在变量,那变量将会被解释

4. Nowdoc语法结构

采用Nowdoc语法结构定义字符串类似于采用Heredoc定义字符串的方式,只不过时在定义标识符时需要使用单引号将标识符进行包围,这种方法无法解释变量,在字符串中变量相当于字符

示例

<?php
$name = "张三";
$str = <<<'test'
My name is $name
My name is 张三
test;
echo $str;
?>

输出结果为:My name is $name My name is 张三

2. 复合类型

复合类型包括数组和对象两种数据类型

类型 说明
array(数组) 一组有序数据组合
object(对象) 对象是类的实例,使用new进行创建

2.1 数组

数组也就是我们常说的键值对的,每个数组都是由索引(键名)和值两部分组成,数组的索引部分可以使用字符串或者是数字表示,值可以是任意数据类型

实例1】采用函数创建数组

<?php
$array = array(
"name" => "张三",
"age" => "11",
);
var_dump($array);
?>

输出结果为:array(2) { ["name"]=> string(6) "张三" ["age"]=> string(3) "11" }

实例2】直接赋值的方式创建数组

<?php
$array = [
"name" => "张三",
"age" => "11",
];
var_dump($array);
?>

输出结果为:array(2) { ["name"]=> string(6) "张三" ["age"]=> string(3) "11" }

实例3】创建只有值得数组

<?php
$array = array("张三","李四","王五");
var_dump($array);
?>

输出结果为:array(3) { [0]=> string(6) "张三" [1]=> string(6) "李四" [2]=> string(6) "王五" }

提示】不设置索引得话,数组会自动添加一个索引,这个索引是由数字组成得,第一个从零开始

实例4】读取数组时,可以使用索引名用方括号包围得方式进行读取

<?php
$array = array(
"name" => "张三",
"age" => "11",
);
var_dump($array['name']);
?>

输出结果为:string(6) "张三"

当然也可以用数组得索引进行赋值得例如:

<?php
$array = array(
"name" => "张三",
"age" => "11",
);
$array['name'] = "李四";
var_dump($array);
?>

输出结果为:array(2) { ["name"]=> string(6) "李四" ["age"]=> string(2) "11" }

2.2 对象

对象是面向对象编程得基础,在PHP中使用new进行实例化,也就是创建对象

实例】创建对象

<?php
class test{
function fu(){
echo "test";
}
}
$test = new test;
$test->fu();
?>

输出结果为:test

3. 特殊类型

特殊得数据类型包含资源和空值两种

类型 说明
resource(资源) 这个也是就指的外部资源,如上传的文件等
NULL(空值) 指的是当没有赋值变量时则为空

3.1 资源

资源数据类型变量保存有打开文件、数据库连接、图形画布区域等的特殊句柄,不建议将其他数据类型转换为资源类型,多数使用在文件上传,下载,数据库等场景

资源数据类型自动开启资源回收机制,随时释放不再使用的资源,以免程序占用服务器的大量资源,无需手动释放

后续为大家记录资源的使用方法吧。

3.2 NULL

NULL即空值,也是就是说变量并没有进行赋值,其值时一个比较特殊的值为null,该值不区分大小写,变量为空值时会存在设置为空、变量没有被赋值和使用unset()函数处理过的变量

示例1】设置变量值为空

<?php
$test = null;
var_dump($test);
?>

输出结果为:NULL

示例2】在不设置变量时输出变量值

<?php
var_dump($a);
?>

输出结果为:NULL

提示】使用unset()函数将会摧毁变量,使用is_null()函数可以判断变量是否为空

实例3】判断变量是否为空

<?php
$a = "张三";
if (is_null($a)){
echo "变量为空";
}else{
echo "变量不为空";
}
?>

输出结果为:变量不为空

自学PHP笔记(二) PHP数据类型的更多相关文章

  1. Typescript 学习笔记二:数据类型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  2. python笔记二(数据类型和变量、编码方式、字符串的编码、字符串的格式化)

    一.数据类型 python可以直接处理的数据类型有:整数.浮点数.字符串.布尔值.空值. 整数 浮点数 字符串:双引号内嵌套单引号,可以输出 i'm ok. 也可以用\来实现,\n 换行 \t tab ...

  3. Java学习笔记二:数据类型II

    GitHub代码练习地址:https://github.com/Neo-ML/JavaPractice/blob/master/Intpractice3.java 一  Java中的数据类型 Java ...

  4. python学习笔记(二):python数据类型

    上一篇博客写了python的入门和简单流程控制,这次写python的数据类型和各种数据类型的内置方法.一.数据类型是什么鬼?计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各 ...

  5. Java复习笔记(二):数据类型以及逻辑结构

    一.数据类型 1.数据类型又分为基本数据类型和引用数据类型,而他们的区别在于,引用数据类型需要开辟内存空间来进行分配,什么意思呢?先来看看他们有哪些. 整数型:byte,short,int,long ...

  6. MySQL数据库笔记二:数据类型及数据库操作

    三.MySQL数据库数据类型 MySQL数据库中支持多种数据类型:数值型.字符型.日期型 常用的数据类型: 1.整型 int:整形,存储整数 int(M):M表示预期值.与存储大小和数值的范围无关. ...

  7. 自学vue笔记 (二) : 实例与生命周期

    一: 什么是实例 我们说了,Vue 应用都应该从构建一个 Vue 实例开始.它管理着挂载在它身上的所有内容,因此实例是一个根实例, 所有的组件都应该挂载在根实例上面.创建一个 Vue 实例,需要通过 ...

  8. Mysql学习笔记(二)数据类型 补充

    原文:Mysql学习笔记(二)数据类型 补充 PS:简单的补充一下数据类型里的String类型以及列类型... 学习内容: 1.String类型 2.列类型存储需求 String类型: i.char与 ...

  9. 自学PHP笔记(五) PHP运算符

    本文转发来自:自学PHP笔记(五) PHP运算符 首先我们需要了解运算符是什么,运算符是指的对变量.常量或者数据进行计算的一个符号,比如数学中学到的加减乘除等用来运算的代表符号,PHP中的运算符也是这 ...

  10. jQuery源码笔记(二):定义了一些变量和函数 jQuery = function(){}

    笔记(二)也分为三部分: 一. 介绍: 注释说明:v2.0.3版本.Sizzle选择器.MIT软件许可注释中的#的信息索引.查询地址(英文版)匿名函数自执行:window参数及undefined参数意 ...

随机推荐

  1. 区块链DApp学习开发入门 视频

    学习视频: https://www.bilibili.com/video/BV13E411P7km?p=1 https://www.bilibili.com/video/BV14z4y1Z7Jd?p= ...

  2. 如何使用git通过ssh协议拉取gitee上的项目代码——如何正确的免密使用git

    如何在gitee网站上生成/添加SSH公钥见教程: 生成/添加SSH公钥 测试公私秘钥是否成功: ssh -T git@gitee.com ============================== ...

  3. Auto.js 入门教程(二)

    来了来了 ~ 下面开始学习auto.js 了! 准备材料 : android7.0及以上版本的手机一部(需要开启 '无障碍服务') auto.js软件 vscode (安装配套插件Auto.js-VS ...

  4. 关于vue按需引入ElMessage和ElMessageBox未被自动引入到auto-important的问题

    相信关于按需引入大家应该都会了,不论是官网还是百度一大堆教程 我这边也是参照https://github.com/youlaitech/vue3-element-admin的写法去写的-----需要的 ...

  5. brpc linux 下编译构建

    brpc 在 linux 下编译构建,比在 mac 下还要更复杂些,mac 下可以走官方说明编译成功,过程中也需要进行一些配置调整. 在 linux 通过 bazel 最终实现了 brpc 编译通过. ...

  6. CANopen学习笔记(三)NMT

    NMT NMT主要用来管理和控制各个节点的状态,具体协议可以分为以下四类: NMT protocol Node guard protocol Heartbeat protocol Bootup pro ...

  7. OpenTelemetry 实战:从零实现应用指标监控

    前言 在上一篇文章:OpenTelemetry 实战:从零实现分布式链路追踪讲解了链路相关的实战,本次我们继续跟进如何使用 OpenTelemetry 集成 metrics 监控. 建议对指标监控不太 ...

  8. Maven 换源

    ~/.m2/settings.xml <settings> ... <mirrors> ... <mirror> <id>alimaven</id ...

  9. 【工具分享】红队重点资产指纹识别 -- P1finger -0.02(最新版本)

    工具介绍: P1finger 红队行动下的重点资产指纹识别工具.P1finger 是一个重点资产指纹识别的工具,旨在通过HTTP请求特征来识别目标系统.其主要特点包括: 语言和实现: 语言:使用Go语 ...

  10. 【YashanDB数据库】yasql登录有特殊字符@导致无法登录

    问题备机 Linux bash shell环境下,使用yasql登录数据库没有使用转义导致登录失败.报错信息如下 问题分析 linux特殊字符转义问题,多加几层转义可以解决问题. 解决办法 su - ...