0

0

php中的类型转换

韦小宝

韦小宝

发布时间:2018-05-14 14:38:55

|

7728人浏览过

|

来源于php中文网

原创

我们在php开发的过程中绝对会遇到接收到的数据类型和我们想要的数据类型不一样,这时我们就是可以使用php类型转换了,今天我们要来讲的就是php中的了类型转换,废话不多说了,我们一起来看吧!

转换为整型和浮点数

能转换为整数的类型只包括浮点数、布尔值,字符串和资源。数组、对象不能转换为数值类型

转换为浮点数时,除了字符串转换为浮点数时有自己的一套规则外,而其他值都是先转换为整数(在能转换为整数的前提下),再转换为浮点数。

当从浮点数转换成整数时,将向下取整(小数部分丢弃)。如果浮点数超出了整数范围,则结果为未定义,因为没有足够的精度给出一个确切的整数结果。在此情况下没有警告,甚至没有任何通知!

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

PHP 7.0.0 起,NaN 和 Infinity 在转换成 integer 时,不再是 undefined 或者依赖于平台,而是都会变成零。

字符串(只支持十进制)转换为整数时,从第一个字符开始寻找合法的整数字符直到字符串结尾或遇到非整数字符,将找到的字符转换为整数,若无合法字符,结果为0。

字符串转换为浮点数时,从第一个字符开始寻找合法的浮点数字符直到字符串结尾或遇到非浮点数字符,将找到的字符转换为浮点数,若无合法字符,结果为0。

如果该字符串没有包含 '.','e' 或 'E' 并且其数字值在整型的范围之内(由 PHP_INT_MAX 所定义),该字符串将被当成 integer 来取值。其它所有情况下都被作为 float 来取值。

该字符串的开始部分决定了它的值。如果该字符串以合法的数值开始,则使用该数值。否则其值为 0(零)。合法数值由可选的正负号,后面跟着一个或多个数字(可能有小数点),再跟着可选的指数部分。指数部分由 'e' 或 'E' 后面跟着一个或多个数字构成。

echo 0+"0xff","\n";   // 0  
echo 0+"2.33","\n";   // 2.33  
echo 0+"033","\n";    // 33  
echo 0+"2e3","\n";    // 2000
null -> 0
true -> 1
false -> 0

将 resource 转换成 integer 时, 结果会是 PHP 运行时为 resource 分配的唯一资源号。

转换为字符串

true -> "1"
false -> ""
null -> ""

整数或浮点数转换为字符串,直接将数值表示成字符串(十进制、小数点形式)

数组转换为字符串时,结果都是"Array"

对象转换为字符串时,结果都是"Object"

资源转换字符串时,类似"Resource id#1"这样的字符串

转换为布尔值

当其它值转换为布尔值时,只有以下这些值会转换为false,其他的全都转换为true:

整数0

浮点数0.0

字符串"0"

字符串""

空数组(无元素)

空对象(无成员)

NULL(包括尚未设置的变量)

从空标记生成的 SimpleXML 对象 

AutoDraw
AutoDraw

AutoDraw是一个绘图工具,可以将草图转换成现成的模型图片

下载

转换为数组

整数、浮点数、布尔值、字符串转换为数组时,得到一个新数组,数组只有一个元素,这就元素的值便是相应的整数、浮点数、布尔值、字符串。

将null转换为数组时,结果是一个空数组:

echo var_dump((array)null);  
//array(0) {

}

显示转换

1.可以在变量前面添加强制类型转换运算符:

(int)(integer)
(float)(double)(real)
(bool)(boolean)
(string)
(array)
(object)

这种方式并没有改变变量的数据类型,而只是改变了表达式的数据类型。

2.使用settype(var, type)函数

$var = true;  
settype($var, "integer");  
var_dump($var);  // int(1)

可见,变量的类型和值都被修改了

3.使用intval()/floatval()/boolval()/strval()系列函数

注意,这些函数并不会修改变量的值

$var = "0xff";  
$num = intval($var, 16);  
var_dump($var);  // string(4) "0xff"  
var_dump($num);  // int(255)

如果intval()函数的第一个参数是一个字符串,则可以再提供一个可选的第二参数,以指定字符串中数值的进制。如果不提供此参数,则默认按十进制处理,参数指定为0,则会以字符串的形式自动判断(以0x开头为十六进制。。)

intval()不能用于对象类型

该函数返回一个转换后的整数值,如果转换失败,返回0,如果参数是数组,则非空数组返回1,空数组返回0

boolval()获取参数的布尔值。

floatval()函数的参数只能是标量类型,如整数、浮点数、布尔值、字符串。不能用于数组或对象。

strval()函数的参数只能是标量类型,如整数、浮点数、布尔值、字符串。不能用于数组或对象。

什么情况下不会进行隐式转换

算术运算符的两个操作数都会被转换为数值类型。

字符串连接符的两个操作数都会被转换为字符串类型。

在一个需要字符串的表达式中,会自动转换为string。比如在使用函数 echo 或 print 时,或在一个变量和一个 string 进行比较时,就会发生这种转换。

以上就是 php中的类型转换 的所有内容了,希望对大家有帮助,更多质料请在本站搜索。

相关推荐:

php类型转换的判别

php类型转换

PHP类型转换的面试题与答案解析

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

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

豆包大模型
豆包大模型

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

通义千问
通义千问

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

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

更多
C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

38

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

83

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

97

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

223

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

458

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

169

2026.03.04

Swift iOS架构设计与MVVM模式实战
Swift iOS架构设计与MVVM模式实战

本专题聚焦 Swift 在 iOS 应用架构设计中的实践,系统讲解 MVVM 模式的核心思想、数据绑定机制、模块拆分策略以及组件化开发方法。内容涵盖网络层封装、状态管理、依赖注入与性能优化技巧。通过完整项目案例,帮助开发者构建结构清晰、可维护性强的 iOS 应用架构体系。

246

2026.03.03

C++高性能网络编程与Reactor模型实践
C++高性能网络编程与Reactor模型实践

本专题围绕 C++ 在高性能网络服务开发中的应用展开,深入讲解 Socket 编程、多路复用机制、Reactor 模型设计原理以及线程池协作策略。内容涵盖 epoll 实现机制、内存管理优化、连接管理策略与高并发场景下的性能调优方法。通过构建高并发网络服务器实战案例,帮助开发者掌握 C++ 在底层系统与网络通信领域的核心技术。

34

2026.03.03

热门下载

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

精品课程

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

共137课时 | 13.4万人学习

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

共6课时 | 11.3万人学习

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

共13课时 | 1.0万人学习

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

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