php基础学习之数据类型

php数据类型的基本概念

数据类型:data type,在PHP中指的是数据本身的类型,而不是变量的类型

PHP 是一种弱类型语言变量本身没有数据类型

把变量类比成一个杯子(容器),杯子可以装雪碧、可乐,雪碧或可乐是饮料类型,但这个杯子是没被规定必须装什么类型的!


php数据类型

在 PHP 中将数据分为三大类八小类——
基本数据类型:4个小类

  • 整型:int,系统分配4或8个字节存储(32位机器为4,64位机器为8),表示整数类型
  • 浮点型:float/double,float和int一样根据机器位数分配4或8个字节,double则固定分配8个字节存储,表示小数
  • 字符串型:string,系统根据实际长度分配,表示字符串
  • 布尔型:bool,表示布尔类型,只有两个值——true和false


复合数据类型:2个小类,

  • 对象类型:object,存放对象(面向对象思想)
  • 数组类型:array,存储多个数据

特殊数据类型:2个小类

  • 资源类型:resource,存放资源数据(PHP 外部数据,如数据库、文件)
  • 空类型:NULL,只有一个值就是 NULL(不能运算)

gettype()函数可以获取变量的类型,格式为:gettype(变量名)


php数据类型转换

①基本概念:

在很多的条件下,需要指定的数据类型。需要将外部数据(当前 PHP 取得的数据)转换成目标数据类型。
在 PHP 中有两种类型转换方式:

  • 自动转换(我也习惯称为隐式转换):系统根据需求判定完成转换(用的比较多,效率偏低)
  • 强制(手动)转换:开发者根据需要的目标类型手动进行转换,语法格式为小括号内写目标类型

在转换过程中,用的比较多的是转布尔类型(在需要判断的情况下)和转数值类型(在需要算术运算的情况下)

②其它类型转布尔类型(bool)

在 PHP 中转变成bool类型后会是false的情况较少,故特殊记忆转为bool类型后值是false的值,其余则为true。

下面给出表格对照,可以观察到,主要是这几种形式的表达式的值转换为bool类型后会是false——

  • 变量未定义
  • 变量定义了但未赋值
  • 变量的值跟空相关(空字符串"",空值null,空数组array())
  • 变量的值跟零相关(整数0,字符'0',字符串"0")(注:PHP和Python一样不强区分字符和字符串,这里是笔者根据C、C++、Java的习惯进行主观区分,即单引号包围一个字符,双引号包围一个字符串)
  • 特殊的,变量的值本身就为false,转为bool类型自然是false,但如果变量的值是字符串"false",转为bool类型却是true

 ③其它类型转数值类型(int、float、double等)

首先:所有数据类型转为float类型时,结果的类型都是double。

(1)布尔类型(bool)转整型(int)或者浮点型(float/double)

true转为1,false转为0,转浮点型时无论是float还是double,结果都为double,且不显示小数位。

 (2)string类型转整型(int)或者浮点型(float/double)

以字符开头的字符串,转数值类型的结果的值,都为0

 以数字开头的字符串,

转int类型时,从左往右一直取到字符出现;转float/double类型时,小数点会取且只取一次


数据类型的获取、判断、设定 

这部分作为补充内容,不建议记忆,需要用或者见到但不认识时去查阅一下,API太多了,能不记尽量不记。

gettype()函数获取变量的数据类型,如gettype($a);

is_xxx()函数判断某变量是不是xxx类型,如is_int($a);

settype()函数设置某变量的类型,如settype($a, "int")

注意settype()函数和强制转换的区别,强制转换是复制一份数据进行转换,而settype()函数是直接对原数据的类型进行设置。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

E - Souvenir(图论典型例题)

思路&#xff1a;对于有很多询问的题&#xff0c;一般都是先初始化。我们求出每个点到其他点的最短路径以及相同路径下最大的价值和即可。 代码&#xff1a; #include <bits/stdc.h> #define pb push_back #define a first #define b second using namespace std; type…

C++面试:跳表

目录 跳表介绍 跳表的特点&#xff1a; 跳表的应用场景&#xff1a; C 代码示例&#xff1a; 跳表的特性 跳表示例 总结 跳表&#xff08;Skip List&#xff09;是一种支持快速搜索、插入和删除的数据结构&#xff0c;具有相对简单的实现和较高的查询性能。下面是跳表…

排序(插入排序)

现在&#xff0c;我们学习了之前数据结构的部分内容&#xff0c;即将进入一个重要的领域&#xff1a;排序&#xff0c;这是一个看起来简单&#xff0c;但是想要理清其中逻辑并不简单的内容&#xff0c;让我们一起加油把&#xff01; 排序的概念及其运用 排序的概念 排序&…

激光雷达行业梳理1-概述、市场、技术路线

激光雷达作为现代精确测距和感知技术的关键组成部分&#xff0c;在近几年里取得了令人瞩目的发展。作为自动驾驶感知层面的重要一环&#xff0c;相较摄像头、毫米波雷达等其他传感器具有“ 精准、快速、高效作业”的巨大优势&#xff0c;已成为自动驾驶的主传感器之一&#xff…

CVHub|AI标注神器 X-AnyLabeling-v2.3.0 发布!支持YOLOv8旋转目标检测、EdgeSAM、RTMO等热门模型!

本文来源公众号“CVHub”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;AI标注神器 X-AnyLabeling-v2.3.0 发布&#xff01;支持YOLOv8旋转目标检测、EdgeSAM、RTMO等热门模型&#xff01; 今天主要为大家详细介绍 X-AnyLabeling …

NQA测试机制—UDP Jitter测试

概念 UDP Jitter是以UDP报文为承载&#xff0c;通过记录在报文中的时间戳信息来统计时延、抖动、丢包的一种测试方法。Jitter&#xff08;抖动时间&#xff09;是指相邻两个报文的接收时间间隔减去这两个报文的发送时间间隔。 UDP Jitter测试的过程如下&#xff1a; 1. 源端&a…

【大数据处理技术实践】期末考查题目:集群搭建、合并文件与数据统计可视化

集群搭建、合并文件与数据统计可视化 实验目的任务一&#xff1a;任务二&#xff1a; 实验平台实验内容及步骤任务一&#xff1a;搭建具有3个DataNode节点的HDFS集群集群环境配置克隆的方式创建 Slave 节点修改主机名编辑 hosts 文件生成密钥免认证登录修改 hadoop 的配置文件编…

软件测试面试题(完整版)

1、B/S架构和C/S架构区别 B/S 只需要有操作系统和浏览器就行&#xff0c;可以实现跨平台&#xff0c;客户端零维护&#xff0c;维护成本低&#xff0c;但是个性化能力低&#xff0c;响应速度较慢 C/S响应速度快&#xff0c;安全性强&#xff0c;一般应用于局域网中&#xff0c…

DFT计算杂谈调查问卷

为更好了解公众号受众对于DFT计算的了解情况以及目标需求&#xff0c;目的以更好更准确并实用地推送给公众号受众所需要的文章&#xff0c;所以本次推送发布调查问卷并收集填写者相关信息。 调查问卷调查内容仅与公众号运营和DFT计算相关&#xff0c;所收集信息仅用作公众号受众…

== 和 equals:对象相等性比较的细微差别

和 equals&#xff1a;对象相等性比较的细微差别 既要脚踏实地于现实生活&#xff0c;又要不时跳出现实到理想的高台上张望一眼。在精神世界里建立起一套丰满的体系&#xff0c;引领我们不迷失不懈怠。待我们一觉醒来&#xff0c;跌落在现实中的时候&#xff0c;可以毫无怨言地…

芋道--如何自定义业务表单,配置对应的工作流程(详细步骤)

需求描述: 芋道的动态表单就不再介绍了&#xff0c;相对来讲比较简单,跟着官网文档就可以实现&#xff0c;本文将详细的介绍如何新建独立的业务表记录申请的信息&#xff0c;并设计对应的工作流。 这里表中的每一条记录&#xff0c;都将通过流程实例编号(process_instance_id )…

HTML标题

我的HTML标题学习小记 HTML的标题功能真的非常实用&#xff01;它们就像是文章的大纲&#xff0c;帮助网页内容呈现出清晰的结构&#xff0c;也就是小题大作一番。 HTML标题的奥秘 在HTML中&#xff0c;我们使用<h1>至<h6>这些标签来定义标题。其中&#xff0c;…

Java 设计者模式以及与Spring关系(六) 装饰和模版方法模式

简介: 本文是个系列一次会出两个设计者模式作用&#xff0c;如果有关联就三个&#xff0c;除此外还会讲解在spring中作用。 23设计者模式以及重点模式 我们都知道设计者模式有3类23种设计模式&#xff0c;标红是特别重要的设计者模式建议都会&#xff0c;而且熟读于心&#…

软件测试|SQL常用语法,你都会吗?

前言 SQL作为一门语言&#xff0c;和其他编程语言一样&#xff0c;都是需要遵循一些特定的规范和准则的&#xff0c;这也就是我们常说的语法&#xff08;Syntax&#xff09;。 下面是几个SQL的语法规则&#xff1a; 所有的 SQL 语法都必须以关键字&#xff08;也称命令&…

图片有路人的部分怎么抠掉?看完你就会

在我们拍摄的照片中&#xff0c;常常会出现一些不想要的元素&#xff0c;比如路人、路边的垃圾桶、广告牌等等&#xff0c;有时候他们的出现可能会破坏照片的整体美感。那么&#xff0c;如何把图片中的路人部分抠掉呢&#xff1f;本文将为你详细介绍多种方法&#xff0c;帮助你…

Java基础 - 09 Set之linkedHashSet , CopyOnWriteArraySet

LinkedHashSet和CopyOnWriteArraySet都是Java集合框架提供的特殊集合类&#xff0c;他们在特定场景下有不同的用途和特点。 LinkedHashSet是Java集合框架中的一种实现类&#xff0c;它继承自HashSet并且保持插入顺序。它使用哈希表来存储元素&#xff0c;并使用链表来维护插入…

让Mac与Windows合二为一:Microsoft Remote Desktop for Mac的魅力

在数字时代&#xff0c;远程连接已成为工作、学习和生活的必备工具。而Microsoft Remote Desktop for Mac正是这样一款能够让你随时随地&#xff0c;轻松连接到Windows系统的强大工具。 Microsoft Remote Desktop for Mac不仅提供了高效、稳定的远程访问体验&#xff0c;更凭借…

aspose-cells-20.7.jar 去除水印及次数限制

1.使用 jd-gui.exe 反编译查看&#xff0c;直接搜索 License 1.修改 public static boolean isLicenseSet() {return (a ! null);}改成 public static boolean isLicenseSet() {return true;}2.修改 public void setLicense(InputStream stream) {Document document null;if (…

Acwing-语法基础习题综合[难度:简单]

目录 题目序号604&#xff1a; 圆的面积 题目序号605&#xff1a; 简单乘积 题目序号606&#xff1a; 平均数1 题目序号607&#xff1a; 平均数2 题目序号608&#xff1a; 差 题目序号609&#xff1a; 工资 题目序号611&#xff1a; 简单计算 题目序号612&#xff1a; …

springboot 整合 ElasticSearch 方法 (一)

下载 ES 相当于安装 MySQL, 可以在官网上下载 (链接在后面). 要注意安装的 ES 的版本要和项目中用的 Springboot 的版本对应. 比如我用的 Springboot 版本是 2.6, 所以ES要下载7.15 版本的. 官网链接: https://www.elastic.co/cn/downloads/elasticsearch 点右边这个查看更多…