php基础学习之数据类型

news2024/11/24 6:23:03

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.coloradmin.cn/o/1405956.html

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

相关文章

2024茶饮品牌如何出圈,媒介盒子分析

随着新式茶饮的消费场景更加多元化,品类不断拓宽,消费者对新式茶饮的热情也是只增不减。居民可支配收入水平不断上升,居民消费升级为新式茶饮的发展也提供了良好基础,今天媒介盒子就来和大家聊聊:2024茶饮品牌如何出圈…

【数据分析】matplotlib、numpy、pandas速通

教程链接:【python教程】数据分析——numpy、pandas、matplotlib 资料:https://github.com/TheisTrue/DataAnalysis 1 matplotlib 官网链接:可查询各种图的使用及代码 对比常用统计图 1.1 折线图 (1)引入 from …

软考之软件工程

一、瀑布模型 严格区分阶段,每个阶段因果关系紧密相连,只适合需求明确的项目 缺点:软件需求完整性、正确性难确定;严格串行化,很长时间才能看到结果;瀑布模型要求每个阶段一次性完全解决该阶段工作&#xf…

Prometheus+Grafana监控Mysql数据库

Promethues Prometheus https://prometheus.io Prometheus是一个开源的服务监控系统,它负责采集和存储应用的监控指标数据,并以可视化的方式进行展示,以便于用户实时掌握系统的运行情况,并对异常进行检测。因此,如何…

【测试开发】Junit5 + YAML 轻松实现参数化和数据驱动,让 App 自动化测试更高效(一)

1. 何为数据驱动 什么是参数化?什么又是数据驱动?经常有人会搞不明白他们的关系,浅谈一下个人的理解,先来看两个测试中最常见的场景: 登录:不同的用户名,不同的密码,不同的组合都需要…

makefile编译静态链接库(.a文件)

文章目录 makefile编译静态链接库(.a文件) makefile编译静态链接库(.a文件) 搞个文件测试静态链接库 aTest.h // // Created by qiufh on 2024-01-23. //#ifndef UNTITLED3_ATEST_H #define UNTITLED3_ATEST_Hclass aTest { pu…

c语言数据结构:单链表及其相关基础操作

目录 0.创建一个额外新的结点 1.链表的概念及其结构 2.单链表的概念 3.单链表的结点的创建 4. 顺序表的打印 5. 链表的尾插 5.1 有关单链表的传参 (重点) 5.1.1 错误的写法 5.1.2 如何修正 5.1.3 正确的写法 5.1.4 看穿二级指针变量 ​编辑 6.链表的头插 7.单链表的…

C++进阶:多态(下)

1、多态的原理 多态之所以可以实现,主要是因为虚函数表的存在,虚函数表用于记录虚函数的地址,他是一个函数指针数组,在类中用一个函数指针数组指针来指向数组,子类继承了父类的虚函数表,当有重写的情况发生…

软考14-上午题-编译、解释程序翻译阶段

一、编译、解释程序【回顾】 目的:高级程序设计语言(汇编语言、高级语言)—【翻译】—>机器语言 1-1、编译方式 将高级语言书写的源程序——>目标程序(汇编语言、机器语言) 包含的工作阶段:词法分…

latex添加图片以及引用的实例教程

原理 在 LaTeX 中插入图片,通常是使用 \includegraphics 命令,它是由 graphicx 包提供的。首先,确保在文档的前言部分(\documentclass 之后和 \begin{document} 之前)包含了 graphicx 包。 下面是一个基本的例子来展…

Hikvision综合安防管理平台files;.css接口存在任意文件读取漏洞 附POC软件

免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 1. Hikvisi…

HIVE中关联键类型不同导致数据重复,以及数据倾斜

比如左表关联键是string类型,右表关联键是bigint类型,关联后会出现多条的情况 解决方案: 关联键先统一转成string类型再进行关联 原因: 根据HIVE版本不同,数据位数上限不同, 低版本的超过16位会出现这种…

变分自编码器VAE模型与应用

变分自编码器(VAE,Variational Autoencoder)是一种深度学习模型,用于数据生成和特征学习。它结合了自编码器(autoencoders)和贝叶斯推断。 下面是VAE的详细解释: 自编码器(Autoenco…

Kafka-消费者-KafkaConsumer分析总结

KafkaConsumer依赖SubscriptionState管理订阅的Topic集合和Partition的消费状态,通过ConsumerCoordinator与服务端的GroupCoordinator交互,完成Rebalance操作并请求最近提交的offset。 Fetcher负责从Kafka中拉取消息并进行解析,同时参与posi…

关于网络协议的笔记

简介: 协议,网络协议的简称,网络协议是通信计算机双方必须共同遵从的一组约定。如怎么样建立连 接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。它的三要素是:语 法、语义、时序。 为了使数据…

REVIT二次开发 自动门窗墙体标注

步骤1 步骤2 步骤3 using System; using System.Collections.Generic; using System.Linq; using System

视频转换成文字,原来转换的方法这么简单!

在我们的生活中,不少小伙伴是否遇到过这样的情况?观看网络视频时,由于解说内容极为引人入胜,忍不住想将其内容记录下来,但这手动逐句整理的过程既耗时又费力。幸运的是,经过一番努力查找,确实有…

Hbas简介:数据模型和概念、物理视图

文章目录 说明零 BigTable一 Hbase简介二 HBase 访问接口简介三 行式&列式存储四 HBase 数据模型4.1 HBase 列族数据模型4.2 数据模型的相关概念4.3 数据坐标 五 概念&物理视图 说明 本文参考自林子雨老师的大数据技术原理与应用(第三版)教材内容,仅供学习…

面试篇-大厂的面试流程和面试注意事项

以前找工作的时候,对于流程中的面试总是好奇流程走到哪一步了,这一轮面试有没有通过,后面不通过还有没有消息通知等问题。今天作为一个求职者和面试官的身份来主要讲一下大厂招聘,内部的面试过程以及流转的流程是什么样的以及该注…

探幽寻秘,一网打尽—多版本银狐木马加密要素揭秘

概述 “银狐”木马,自2023年起在国内肆虐,其攻击范围广泛,波及众多企业。在黑产团伙中应用广泛,并且不同团伙采用的攻击手段各异,加载“银狐”的方式层出不穷,最终呈现的“银狐”木马版本也各有差异。观成…