本文将介绍PHP中的数据类型

引言

在PHP中,与所有编程语言一样,数据类型用于对特定类型的数据进行分类。这一点很重要,因为你使用的特定数据类型将决定你可以给它赋什么值,可以对它做什么操作(包括可以对它执行什么操作)。

在本教程中,我们将介绍PHP原生的重要数据类型。这不是对数据类型的详尽研究,但将帮助您熟悉PHP中可用的选项。

理解数据类型的一种方法是考虑我们在现实世界中使用的不同类型的数据。两种不同的类型是数字和单词。这两种数据类型以不同的方式工作。我们将添加3 + 4来得到7,而我们将结合单词starfish来得到starfish

如果我们开始相互评估不同的数据类型,例如数字和单词,事情开始变得不那么有意义。例如,下面的等式就没有明显的答案:'sky' + 8

对于计算机来说,每种数据类型都可以被认为是不同的,就像单词和数字一样,因此我们必须小心使用它们赋值以及通过操作操作它们。

使用的数据类型

PHP是一种**松散类型(loosely typed)**语言。这意味着,默认情况下,如果值与预期数据类型不匹配,PHP将尝试尽可能更改错误数据类型的值以匹配预期类型。这被称为类型杂耍。例如,一个函数期望一个string,但它接收的是一个值为2integer,它会将传入的值更改为预期的string类型,值为"2"

我们可以并且鼓励在每个文件的基础上启用严格模式。这在您控制的代码中提供了数据类型的强制执行,同时允许使用可能不遵守严格数据类型的额外代码包。严格类型在文件开头声明:

<?php
declare(strict_types=1);
...

在严格模式下,只有与类型声明完全对应的值才会被接受;否则将抛出TypeError。这个规则唯一的例外是int值将传递一个float类型声明。

数字类型

在PHP中输入的任何数字都将被解释为数字。您不需要声明所输入的数据类型。PHP将把任何没有小数的数字视为整数(例如138),任何有小数的数字视为浮点数(例如138.0)。

整数

与数学一样,计算机编程中的整数是整数,可以是正、负或0。整数也可以被称为int。与其他编程语言一样,你不应该在四位或四位以上的数字中使用逗号,因此要在程序中表示数字1000,就把它写成1000

可以像下面这样在控制台中打印一个整数:

echo -25;

这将输出:

Output-25

我们也可以声明一个* 变量 *,在这种情况下,它是我们正在使用或操作的数字的符号,如下所示:

$my_int = -25;
echo $my_int;

这将输出:

Output-25

我们也可以在PHP中使用整数进行数学运算:

$int_ans = 116 - 68;
echo $int_ans;

这将输出:

Output48

在PHP程序中可以以多种方式使用整数,随着您继续了解有关该语言的更多信息,您将有很多机会使用整数并更多地了解此数据类型。

浮点数

  • 浮点数 浮点数 *是实数,这意味着它可以是有理数或无理数。因此,浮点数可以是包含小数部分的数字,例如9.0-116.42。考虑到PHP程序中的float,它是一个包含小数点的数字。

像处理整数一样,可以像下面这样打印一个浮点数:

echo 17.3;

这将输出:

Output17.3

还可以声明一个变量来表示浮点数,如下所示:

$my_flt = 17.3;
echo $my_flt;

这将输出:

Output17.3

而且,就像整数一样,我们也可以在PHP中使用浮点数进行数学运算:

$flt_ans = 564.0 + 365.24;
echo $flt_ans;

这将输出:

Output929.24

对于整数和浮点数,重要的是要记住3不等于3.0,因为3指的是整数,而3.0指的是浮点数。这可能会改变程序运行的方式,也可能不会。
数字在计算、计算物品或金钱以及计算时间时很有用。

字符串

字符串是由一个或多个字符组成的序列,可以由字母、数字或符号组成。这个序列包含在单引号''或双引号""中:

echo 'This is a 47 character string in single quotes.'
echo "This is a 47 character string in double quotes."

两行代码都以相同的方式输出它们的值:

OutputThis is a 47 character string in single quotes.
This is a 47 character string in double quotes.

你可以选择使用单引号或双引号,但无论你选择哪种,都应该在程序中保持一致。
程序“Hello, World!”演示了如何在计算机编程中使用字符串,如组成短语Hello, World!都是字符串:

echo "Hello, World!";

与其他数据类型一样,我们可以将字符串存储在变量中并输出结果:

$hw = "Hello, World!"
echo $hw;

无论哪种方式,输出都是一样的:

OutputHello, World!

和数字一样,我们可以在程序中对字符串执行许多操作,以便通过操作它们来达到我们想要的结果。字符串对于向用户传递信息很重要,对于用户将信息返回给程序也很重要。

布尔值

布尔(Boolean)或bool数据类型可以是两个值之一,truefalse。布尔值用于表示与数学逻辑分支相关的真值。

声明布尔值时不能使用引号;引号中的任何内容都被假定为字符串。PHP在声明布尔值时不关心大小写;TrueTrueTrueTrue的值都是相同的。如果你遵循PHP-FIG的样式指南,值应该全部小写为truefalse

许多数学运算的结果要么为True,要么为False:

  • 大于
    • 500 > 100 True
    • 1 > 5 False
  • 小于
    • 200 < 400 True
    • 4 < 2 False
  • 等于
    • 5 = 5 True
    • 500 = 400 False

和其他数据类型一样,我们可以将布尔值存储在变量中。与数字或字符串不同,echo不能用于输出值,因为布尔值true会被转换为字符串"1",而布尔值false会被转换为""(空字符串)。这允许“类型杂耍”(type juggling)在布尔值和字符串值之间来回转换。要输出布尔值,我们有几个选项。要输出变量的类型和值,我们使用var_dump。要输出变量值的字符串形式,我们使用var_export

$my_bool = 4 > 3;
echo $my_bool;
var_dump($my_bool);
var_export($my_bool);

由于4大于3,我们将收到以下输出:

Output1
bool(true)
true

echo行将布尔值true转换为字符串1var_dump输出变量类型bool以及值truevar_export输出值为true的字符串表示。

随着你用PHP编写的程序越来越多,你将越来越熟悉布尔值的工作原理,以及求值为TrueFalse的不同函数和操作如何改变程序的进程。

NULL

  • NULL *类型表示没有值。它为变量预留空间。这允许PHP知道一个变量,但仍然认为它未设置。NULL类型唯一可能的值是不区分大小写的null。当PHP试图访问一个未声明的变量时,它将抛出警告:
echo $name;

它会警告变量没有被设置,但代码继续处理:

OutputPHP Warning:  Undefined variable $name

防止这种警告的一种常见方法是使用isset函数检查该变量是否已设置:

if (isset($name)) {echo $name;
}

这将完全跳过,不会抛出任何警告。防止这种类型错误的第二种方法是为变量设置占位符值,例如空字符串:

$name = '';
echo "Hello ".$name;

这将显示没有名字的Hello,因为$name的值是一个空字符串:

OutputHello 

这两种解决方案都是有效和有用的。然而,当将$name的值设置为空字符串时,该值实际上被设置了:

$name = '';
if (isset($name)) {echo "Hello ".$name;
}

这也将显示没有名字的Hello,因为$name的值被设置为空字符串:

OutputHello 

与大多数挑战一样,有多种解决方案。一个解决方案是将变量设置为null值。这将为该变量保留空间并防止PHP抛出错误,但仍然认为该变量“未设置”:

$name = null;
echo $name;
if (isset($name)) {echo "Hello ".$name;
}

这个变量已经被“声明”了,所以当echo试图访问这个变量时不会报错。它也不会显示任何东西,因为没有值。条件也会被判定为false,因为$name变量没有被设置。

我们可以使用var_dump来查看PHP如何计算NULL变量:

$name = null;
var_dump($name);

这表明类型为NULL:

OutputNULL 

与其他变量类型相比,NULL不太常见,但经常用作执行某个操作但没有返回值的函数的返回类型。

数组

PHP中的数组实际上是一个有序映射。* map *是一种将值关联或“映射”到键的数据类型。这种数据类型有很多不同的用途。它可以被视为arraylisthash tabledictionarycollection等。此外,因为PHP中的数组值也可以是其他数组,所以可以使用多维数组。

索引数组

在最简单的形式中,数组将具有一个数字索引或key。如果不指定键,PHP将自动为您生成下一个数字键。默认情况下,数组的键是0索引的,这意味着第一个键是0,而不是1。数组中的每个元素或值也可以称为* *项(item) * *。

数组有两种定义方式。第一种是使用array()语言结构,它使用逗号分隔的项目列表。一个整数数组可以这样定义:

array(-3, -2, -1, 0, 1, 2, 3)

第二种也是更常见的定义数组的方式是使用方括号[]的短数组语法。浮点数数组可以这样定义:

[3.14, 9.23, 111.11, 312.12, 1.05]

我们还可以定义一个字符串数组,并将数组赋值给一个变量,如下所示:

$sea_creatures = ['shark', 'cuttlefish', 'squid', 'mantis shrimp'];

同样,我们不能使用echo输出整个数组,但我们可以使用var_exportvar_dump

var_export($sea_creatures);
var_dump($sea_creatures);

输出表明这个数组使用了数字key

Outputarray (0 => 'shark',1 => 'cuttlefish',2 => 'squid',3 => 'mantis shrimp',
)
array(4) {[0]=>string(5) "shark"[1]=>string(10) "cuttlefish"[2]=>string(5) "squid"[3]=>string(13) "mantis shrimp"
}

因为数组是0索引的,所以var_dump显示了一个索引数组,其中的数值键在03之间。每个数字key对应一个字符串value。第一个元素的键为0,值为sharkvar_dump函数为我们提供了关于数组的更多细节:数组中有4项,第一项的值是一个长度为5的字符串。

可以在设置值时指定索引数组的数字键。然而,在使用命名键时,键通常是指定的。

关联数组

关联数组是带有命名键的数组。它们通常用于保存相关的数据,例如ID中包含的信息。关联数组如下所示:

['name' => 'Sammy', 'animal' => 'shark', 'color' => 'blue', 'location' => 'ocean']

**注意:**双箭头运算符=>用于分隔字符串。=>左边的单词是键。键可以是整数,也可以是字符串。钥匙在前面的数组是:'name''animal''color''location'

=>右边的单词是值。值可以由任何数据类型组成,包括数组。前面的数组中的值是:'Sammy''shark''blue''ocean'

与索引数组一样,让我们将关联数组存储在一个变量中,并输出详细信息:

$sammy = ['name' => 'Sammy', 'animal' => 'shark', 'color' => 'blue', 'location' => 'ocean'];
var_dump($sammy);

结果将描述这个数组有4个元素。每个键对应的字符串都是给定的,但只有值指定了类型string,并包含字符数:

Outputarray(4) {["name"]=>string(5) "Sammy"["animal"]=>string(5) "shark"["color"]=>string(4) "blue"["location"]=>string(5) "ocean"
}

关联数组允许我们更精确地访问单个元素。如果想分离萨米的颜色,可以在数组变量后面添加包含键名的方括号:

echo $sammy['color'];

输出结果如下:

Outputblue

由于数组为存储数据提供了键值映射,因此它们可以成为PHP程序中的重要元素。

常量

虽然常量实际上不是一个单独的数据类型,但它的工作方式与其他数据类型不同。顾名思义,常量是只声明一次的变量,之后在整个应用程序中都不会更改。常量的名称应该始终是大写的,并且不能以美元符号开头。常量可以使用define函数或const关键字声明:

define('MIN_VALUE', 1);
const MAX_VALUE = 10;

define函数有两个参数:第一个是包含常量名称的string,第二个是要赋值的值。这可以是前面解释过的任何数据类型值。const关键字允许常量以与其他数据类型相同的方式赋值,使用单个等于号。在应用程序中可以像使用其他变量一样使用常量,只是它们不会被放在双引号字符串中解释:

echo "The value must be between MIN_VALUE and MAX_VALUE";
echo "The value must be between ".MIN_VALUE." and ".MAX_VALUE;

因为这些常量是不解释的,所以输出是不同的:

OutputThe value must be between MIN_VALUE and MAX_VALUE
The value must be between 1 and 10

总结

此时,您应该对PHP中可用的一些主要数据类型有了更好的了解。当您使用PHP语言开发编程项目时,这些数据类型中的每一种都将变得很重要。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/59822.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

北京筑龙受邀出席中物联“采购供应链中国行—走进雄安”活动

日前&#xff0c;“采购供应链中国行—走进雄安”活动在河北雄安新区成功举办&#xff0c;来自30家相关单位的50余名领导和代表参加了本次活动。活动由中国物流与采购联合会公共采购分会主办&#xff0c;中国物流与采购联合会采购委、中国雄安集团有限公司、河北雄安新区招标投…

【数据结构】二叉数的存储与基本操作的实现

文章目录 &#x1f340;二叉树的存储&#x1f333;二叉树的基本操作&#x1f431;‍&#x1f464;二叉树的创建&#x1f431;‍&#x1f453;二叉树的遍历&#x1f3a1;前中后序遍历&#x1f4cc;前序遍历&#x1f4cc;中序遍历&#x1f4cc;后续遍历 &#x1f6eb;层序遍历&am…

Java 8:Stream API 流式操作(学习)

Java 8&#xff1a;Stream API Java 8 中的 Stream API 是一组用于对集合数据进行处理的新特性&#xff1b;提供一种以声明式风格对集合进行操作的方式&#xff0c;简化集合的处理&#xff0c;使得代码更加简洁、优雅&#xff0c;并且能够更高效地处理数据&#xff1b; 这种风格…

商家必读:影响快递物流速度的这几个关键因素

在这个迅速发展的数字时代&#xff0c;消费者对于快速、高效的购物体验有着越来越高的期望。而作为商家&#xff0c;能否满足顾客对快递速度的要求将直接影响到商家的竞争力和业务发展。今天就和大家聊聊一个在电商行业中至关重要的话题——快递的物流速度对商家的重要性。 首…

leetcode做题笔记108. 将有序数组转换为二叉搜索树

给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。 思路一&#xff1a;模拟题意 struct TreeNode* inorder(int…

Linux——socket网络通信

一、什么是socket Socket套接字 由远景研究规划局&#xff08;Advanced Research Projects Agency, ARPA&#xff09;资助加里福尼亚大学伯克利分校的一个研究组研发。其目的是将 TCP/IP 协议相关软件移植到UNIX类系统中。设计者开发了一个接口&#xff0c;以便应用程序能简单地…

LeetCode 面试题 01.08. 零矩阵

文章目录 一、题目二、C# 题解 一、题目 编写一种算法&#xff0c;若M N矩阵中某个元素为0&#xff0c;则将其所在的行与列清零。 点击此处跳转题目。 示例 1&#xff1a; 输入&#xff1a; [ [1,1,1], [1,0,1], [1,1,1] ] 输出&#xff1a; [ [1,0,1], [0,0,0], [1,0,1] ] 示…

【RuoYi移动端】uniApp导入和引用uView2.0插件

一、打开uiew官网 安装 | uView 2.0 - 全面兼容 nvue 的 uni-app 生态框架 - uni-app UI 框架uView UI&#xff0c;是 uni-app 生态最优秀的 UI 框架&#xff0c;全面的组件和便捷的工具会让您信手拈来&#xff0c;如鱼得水https://uviewui.com/components/install.html 也可直…

大学生毕业设计论文题目大全-kaic

济南“樊然”主题餐厅设计莘县澄里甜品店设计聊城凤凰台星际电影公馆设计临沂市爱萌宠物医院设计定陶区云想衣服装店设计任城区曜龙休闲会所设计莘县衍界咖啡馆设计金乡啡尝嘢休闲吧设计聊城市皮肤病医院门诊设计禹城蜗牛书吧设计万达广场小乌托早教中心设计古城区栖居民宿设计…

hadoop大数据集群中更换磁盘,balance的速度缓慢问题(解决)

hadoop大数据集群中更换磁盘&#xff0c;balance的速度缓慢问题&#xff08;解决&#xff09; 看现象只有4个bloucks在执行的 调整参数&#xff1a; 增大配置参数&#xff0c;观察重新负载的速度 修改配置文件 hdfs-site.xml dfs.datanode.balance.max.concurrent.moves100 …

​iOS上架审核宝典:如何避免被拒一次提交成功

Xcode 摘要&#xff1a;本文整理了iOS上架需要注意的事项&#xff0c;以帮助从事iOS开发和App运营的朋友们避免审核被拒的困扰。通过遵循这些指南&#xff0c;我们可以在一次提交中成功地将应用上架&#xff0c;并节省宝贵的时间和精力。 引言&#xff1a; 从事iOS开发和App运…

Kratos源码-Logging

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、log初始化二、log的调用1.logger注入2.引入Helper 三、集成三方框架总结三要&#xff1a;五不要 前言 提示&#xff1a;这里可以添加本文要记录的大概内容…

【SpringBoot】最基础的项目架构(SpringBoot+Mybatis-plus+lombok+knife4j+hutool)

汝之观览&#xff0c;吾之幸也&#xff01; 从本文开始讲下项目中用到的一些框架和技术&#xff0c;最基本的框架使用的是SpringBoot(2.5.10)Mybatis-plus(3.5.3.2)lombok(1.18.28)knife4j(3.0.3)hutool(5.8.21),可以做到代码自动生成&#xff0c;满足最基本的增删查改。 一、新…

java+ssm+mysql农场信息管理系统

项目介绍&#xff1a; 本系统为基于jspssmmysql的农场信息管理系统&#xff0c;功能如下&#xff1a; 用户&#xff1a;注册登录系统&#xff0c;菜地信息管理&#xff0c;农作物信息管理&#xff0c;种植信息管理&#xff0c;客户信息管理&#xff0c;商家信息管理&#xff…

一个简单的vim例子

一.欢迎来到我的酒馆 在本章节介绍vim工具。 目录 一.欢迎来到我的酒馆二.什么是vim 二.什么是vim 2.1什么是vim vim是一种Linux命令行类型 的文本编辑器。vim指的是"vi improved"&#xff0c;意思是vi工具的升级版。vim是基于vi实现的&#xff0c;它提供了…

电工-照明电路施工图

照明电路施工图 上面介绍的电气照明基本电路用作施工的依据是不够的&#xff0c;这是因为图上并没有注明电气元件的规格、型号、安装要求、线路敷设方式以及其他一些特征。作为实际电路安装的依据&#xff0c;必须是根据国家颁布的有关电器技术标准和统一符号绘制的施工图。照…

iOS开发Swift-基本运算符

1.一元、二元、三元运算符 一元单一操作对象-a !b c!二元两个操作对象2 3三元三目运算符a ? b : c 2.赋值运算符() let a 10 var b 5 b a let (x, y) (1, 2)赋值运算符不返回任何值&#xff0c;所以 if x y { ... } 无效。 3.算术运算符 - * / 默认不允许数…

【1day】复现金和协同管理平台任意文件读取漏洞

目录 一、漏洞描述 二、影响版本 三、资产测绘 四、漏洞复现 一、漏洞描述 金和OA是一款企业级办公自动化软件,旨在提供高效的办公流程管理和协作解决方案。它提供了一系列功能和工具,帮助企业实现办公自动化、信息共享和团队协作。金和OA系统存在任意文件读取漏洞,攻…

文本匹配实战系列

引言 本系列文章开始介绍深度学习在文本匹配领域的应用&#xff0c;并且会尝试得到各种模型在给定的数据集上的表现。 深度文本匹配发展比较久&#xff0c;积累了很多文本匹配方法。也有很多的分类方式&#xff0c;一种分类方式是表示型和交互型。 表示型方法 表示型(repre…

kafka架构和原理详解

Apache Kafka 是一个分布式流数据平台,用于高吞吐量、持久性、可扩展的发布和订阅消息。它具有高度的可靠性,被广泛用于构建实时数据流处理、日志收集和数据管道等应用。 基本架构 1. 主题(Topic): 主题是消息的逻辑分类生产者将消息发布到特定的主题中,而消费者可以订阅…