0

0

PHP变量类型有哪些_PHP变量支持的数据类型【汇总】

星夢妙者

星夢妙者

发布时间:2026-02-26 23:11:02

|

929人浏览过

|

来源于php中文网

原创

php变量类型动态决定于运行时值而非声明,$var本身无类型;8种内置类型含标量、复合及特殊类型,strict_types仅约束函数参数与返回值,资源与对象序列化行为迥异。

php变量类型有哪些_php变量支持的数据类型【汇总】

PHP变量类型不是固定声明的,而是运行时动态决定的

PHP里没有“定义变量类型”这回事,$var 本身不带类型,类型属于它当前存储的值。你赋一个整数,$var 就是 int;改成字符串,立刻变成 string;塞个数组进去,就是 array。这种动态性是PHP底层实现决定的,不是语法糖或者可选项。

常见错误现象:gettype($var) 返回 "integer",但稍后 $var = "123",再调用就变 "string";有人误以为 declare(strict_types=1) 能约束变量类型——它只影响函数参数和返回值的类型声明,对普通变量完全无效。

  • 所有变量都以 $ 开头,无需提前声明类型
  • var_dump() 是最靠谱的类型+值查看方式,比 gettype() 多一层结构信息
  • 类型转换靠强制转换(如 (int)$val)或函数(如 intval()),但要注意隐式转换陷阱,比如 "123abc" + 1 得到 124,因为字符串被截断转成数字

8种内置标量与复合类型,其中 NULLresource 最容易误判

PHP官方文档列了8种类型:4个标量(boolintfloatstring)、2个复合(arrayobject)、1个特殊(NULL)、1个资源(resource)。注意 callableiterable 是伪类型,只用于类型声明,不能用 gettype() 检测出来。

容易踩的坑:NULL 不等于空字符串、0false,但 empty()== 会把它们混为一谈;resource 类型(比如 fopen() 返回值)在 PHP 8.1 后已标记为废弃,且无法用 json_encode() 序列化,直接打印只显示 Resource id #n,必须用对应函数(如 get_resource_type())识别。

立即学习PHP免费学习笔记(深入)”;

1CMS内容管理系统5.1
1CMS内容管理系统5.1

1CMS核心特点 安全稳定,轻量高效 采用精简代码架构,安装包体积不足1MB,无冗余功能,确保系统运行高效稳定。 广泛兼容性 全面支持PHP 5.2至PHP 8.4版本,适配MySQL及SQLite数据库,满足多样化部署需求。 灵活的内容管理 提供数十种专业输入字段类型,助力快速构建各类网站。 支持自定义栏目变量、文章字段及

下载
  • bool 只有 truefalse 两个值,注意 0""[]null 在松散比较中都算 “falsy”,但它们类型完全不同
  • float 实际是双精度浮点数(IEEE 754),0.1 + 0.2 !== 0.3 是常态,金融计算务必用 bcadd()gmp
  • array 是有序映射表,既是索引数组也是关联数组,count() 对空对象返回 0,但对象不是 array

对象和资源类型的行为差异极大,尤其在生命周期和序列化上

object 类型由类实例化而来,自带属性、方法和作用域规则;resource 是外部资源(文件句柄、数据库连接等)的抽象指针,没有方法,也不能直接访问内部数据。两者都不能直接 json_encode(),但原因不同:对象默认只序列化 public 属性,而 resource 根本没有可序列化的结构。

典型问题:fclose() 后继续使用该 resource 变量,gettype() 仍返回 "resource",但后续操作会报 Warning: fwrite(): supplied resource is not a valid stream resource;对象在 unset 后变成 null,但资源关闭后变量依然存在,只是失效了。

  • 判断资源是否有效,用 is_resource($res) && get_resource_type($res) === 'stream',不能只靠 is_resource()
  • 对象要自定义序列化行为,需实现 __serialize()__unserialize()(PHP 7.4+),否则 serialize() 只存 public 属性
  • 资源类型无法 clone,也无法用 === 比较是否指向同一底层资源,只能靠业务逻辑保证生命周期

PHP 8 的 mixednever 是类型声明关键词,不影响运行时变量类型

mixed 表示“可以是任意类型”,never 表示“这个函数不会正常返回”,它们只在函数签名、属性声明或 PHPDoc 中起作用,运行时 gettype() 完全看不到它们。有人在 PHP 8 下写 function foo(): mixed { return new stdClass(); },然后期待 gettype(foo()) 返回 "mixed"——这是不可能的,实际还是 "object"

兼容性提醒:PHP 7.4 引入了 object 类型声明(表示任意对象),但它不等于 stdClass,也不限制具体类名;而 mixed 在 PHP 8.0 才正式支持,低版本用会报错,不能当运行时类型检测依据。

  • 类型声明只校验传参和返回,不影响变量本身的动态性
  • var_export() 输出的是可执行的 PHP 代码,能反映当前值类型;print_r() 更适合调试,但对资源只输出占位符
  • 真正需要类型安全的场景,别依赖运行时判断,用严格类型声明 + 静态分析工具(如 PHPStan)更可靠

类型系统在 PHP 里始终是“声明层”和“运行层”两套逻辑并存,混淆这两者是绝大多数类型相关 bug 的根源。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
数据类型有哪几种
数据类型有哪几种

数据类型有整型、浮点型、字符型、字符串型、布尔型、数组、结构体和枚举等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

311

2023.10.31

php数据类型
php数据类型

本专题整合了php数据类型相关内容,阅读专题下面的文章了解更多详细内容。

223

2025.10.31

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

97

2026.02.12

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

850

2023.08.02

css中float用法
css中float用法

css中float属性允许元素脱离文档流并沿其父元素边缘排列,用于创建并排列、对齐文本图像、浮动菜单边栏和重叠元素。想了解更多float的相关内容,可以阅读本专题下面的文章。

592

2024.04.28

C++中int、float和double的区别
C++中int、float和double的区别

本专题整合了c++中int和double的区别,阅读专题下面的文章了解更多详细内容。

105

2025.10.23

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

248

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

906

2024.03.01

Golang 实际项目案例:从需求到上线
Golang 实际项目案例:从需求到上线

《Golang 实际项目案例:从需求到上线》以真实业务场景为主线,完整覆盖需求分析、架构设计、模块拆分、编码实现、性能优化与部署上线全过程,强调工程规范与实践决策,帮助开发者打通从技术实现到系统交付的关键路径,提升独立完成 Go 项目的综合能力。

1

2026.02.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 12.5万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.3万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号