- PHP 教程
- PHP - 首页
- PHP - 简介
- PHP - 安装
- PHP - 历史
- PHP - 特性
- PHP - 语法
- PHP - Hello World
- PHP - 注释
- PHP - 变量
- PHP - Echo/Print
- PHP - var_dump
- PHP - $ 和 $$ 变量
- PHP - 常量
- PHP - 魔术常量
- PHP - 数据类型
- PHP - 类型转换
- PHP - 类型混杂
- PHP - 字符串
- PHP - 布尔值
- PHP - 整数
- PHP - 文件与 I/O
- PHP - 数学函数
- PHP - Heredoc & Nowdoc
- PHP - 复合类型
- PHP - 文件包含
- PHP - 日期与时间
- PHP - 标量类型声明
- PHP - 返回类型声明
- PHP 运算符
- PHP - 运算符
- PHP - 算术运算符
- PHP - 比较运算符
- PHP - 逻辑运算符
- PHP - 赋值运算符
- PHP - 字符串运算符
- PHP - 数组运算符
- PHP - 条件运算符
- PHP - 展开运算符
- PHP - 空值合并运算符
- PHP - 比较符
- PHP 控制语句
- PHP - 决策
- PHP - If…Else 语句
- PHP - Switch 语句
- PHP - 循环类型
- PHP - For 循环
- PHP - Foreach 循环
- PHP - While 循环
- PHP - Do…While 循环
- PHP - Break 语句
- PHP - Continue 语句
- PHP 函数
- PHP - 函数
- PHP - 函数参数
- PHP - 按值传递
- PHP - 按引用传递
- PHP - 默认参数
- PHP - 具名参数
- PHP - 可变参数
- PHP - 返回值
- PHP - 传递函数
- PHP - 递归函数
- PHP - 类型提示
- PHP - 变量作用域
- PHP - 严格类型
- PHP - 匿名函数
- PHP - 箭头函数
- PHP - 可变函数
- PHP - 局部变量
- PHP - 全局变量
- PHP 超全局变量
- PHP - 超全局变量
- PHP - $GLOBALS
- PHP - $_SERVER
- PHP - $_REQUEST
- PHP - $_POST
- PHP - $_GET
- PHP - $_FILES
- PHP - $_ENV
- PHP - $_COOKIE
- PHP - $_SESSION
- PHP 文件处理
- PHP - 文件处理
- PHP - 打开文件
- PHP - 读取文件
- PHP - 写入文件
- PHP - 文件是否存在
- PHP - 下载文件
- PHP - 复制文件
- PHP - 追加文件
- PHP - 删除文件
- PHP - 处理 CSV 文件
- PHP - 文件权限
- PHP - 创建目录
- PHP - 列出文件
- 面向对象 PHP
- PHP - 面向对象编程
- PHP - 类和对象
- PHP - 构造函数和析构函数
- PHP - 访问修饰符
- PHP - 继承
- PHP - 类常量
- PHP - 抽象类
- PHP - 接口
- PHP - 特性
- PHP - 静态方法
- PHP - 静态属性
- PHP - 命名空间
- PHP - 对象迭代
- PHP - 封装
- PHP - final 关键字
- PHP - 重载
- PHP - 克隆对象
- PHP - 匿名类
- PHP Web 开发
- PHP - Web 概念
- PHP - 表单处理
- PHP - 表单验证
- PHP - 表单邮件/URL
- PHP - 完整表单
- PHP - 文件包含
- PHP - GET & POST
- PHP - 文件上传
- PHP - Cookie
- PHP - Session
- PHP - Session 选项
- PHP - 发送邮件
- PHP - 净化输入
- PHP - Post-Redirect-Get (PRG)
- PHP - 闪存消息
- PHP 高级
- PHP - MySQL
- PHP.INI 文件配置
- PHP - 数组解构
- PHP - 编码规范
- PHP - 正则表达式
- PHP - 错误处理
- PHP - Try…Catch
- PHP - Bug 调试
- PHP - 针对 C 开发人员
- PHP - 针对 PERL 开发人员
- PHP - 框架
- PHP - Core PHP 与框架
- PHP - 设计模式
- PHP - 过滤器
- PHP - JSON
- PHP - 异常
- PHP - 特殊类型
- PHP - 哈希
- PHP - 加密
- PHP - is_null() 函数
- PHP - 系统调用
- PHP - HTTP 身份验证
- PHP - 交换变量
- PHP - Closure::call()
- PHP - 过滤后的 unserialize()
- PHP - IntlChar
- PHP - CSPRNG
- PHP - 期望值
- PHP - use 语句
- PHP - 整数除法
- PHP - 已弃用的特性
- PHP - 已移除的扩展和 SAPI
- PHP - PEAR
- PHP - CSRF
- PHP - FastCGI 进程
- PHP - PDO 扩展
- PHP - 内置函数
- PHP 有用资源
- PHP - 速查表
- PHP - 问答
- PHP - 快速指南
- PHP - 在线编译器
- PHP - 有用资源
- PHP - 讨论
PHP - 类型转换
“类型转换”指的是将一种数据类型转换为另一种数据类型。由于 PHP 是一种弱类型语言,解析器在执行某些操作时会将某些数据类型强制转换为其他类型。例如,如果一个包含数字的字符串是加法运算中的操作数之一,则该字符串将转换为整数。
隐式类型转换
这是一个强制或隐式类型转换的示例:
<?php $a = 10; $b = '20'; $c = $a+$b; echo "c = " . $c; ?>
在这种情况下,$b 是一个字符串变量,被强制转换为整数以进行加法运算。它将产生以下输出:
c = 30
让我们来看另一个例子。这里,整数变量 $a 被转换为字符串,以便与字符串变量连接。
<?php $a = 10; $b = '20'; $c = $a.$b; echo "c = " . $c; ?>
它将产生以下输出:
c = 1020
除了这种强制类型转换之外,还有其他方法可以显式地将一种数据类型转换为另一种数据类型。您可以为此目的使用 PHP 的类型转换运算符或类型转换函数。
类型转换运算符
要将一种类型的表达式转换为另一种类型,需要在表达式之前用括号括起来目标数据类型。
$var = (type)expr;
PHP 中的一些类型转换运算符有:
(int) 或 (integer) 转换为整数
(bool) 或 (boolean) 转换为布尔值
(float) 或 (double) 或 (real) 转换为浮点数
(string) 转换为字符串
(array) 转换为数组
(object) 转换为对象
转换为整数
您可以轻松地将浮点值转换为整数。请看下面的示例:
<?php $a = 9.99; $b = (int)$a; var_dump($b); ?>
它将产生以下输出:
int(9)
请注意,浮点值不会四舍五入到最接近的整数;而是只返回整数部分。
字符串到整数转换
(int) 运算符也用于将字符串转换为整数。如果字符串只包含数字,则转换很简单。
<?php $a = "99"; $b = (int)$a; var_dump($b); ?>
这里,您将获得以下输出:
int(99)
即使字符串包含浮点数,(int) 运算符也只返回整数部分。
现在让我们来看另一个例子来理解一个特例。如果字符串是字母数字的,则使用 (int) 进行转换的方式不同。
如果字符串以数字开头,后面跟着非数字字符,则只考虑初始数字。
如果字符串以非数字字符开头,而数字在中间,则转换运算符返回“0”。
请看下面的示例:
<?php $a = "10 Rs."; $b = (int)$a; var_dump($b); $a = "$100"; $b = (int)$a; var_dump($b); ?>
它将产生以下输出:
int(10) int(0)
转换为浮点类型
您可以使用 (float) 或 (double) 转换运算符将变量或表达式显式转换为浮点数。
<?php $a = 100; $b = (double)$a; var_dump($b); ?>
它将产生以下输出:
float(100)
包含任何有效数字表示的字符串都可以使用转换运算符转换为浮点类型。
<?php $a = "100"; $b = (double)$a; var_dump($b); $a = "9.99"; $b = (float)$a; var_dump($b); ?>
这里,您将获得以下输出:
float(100) float(9.99)
即使字符串包含浮点数的科学计数法,也会转换为浮点数。请看下面的示例:
<?php $a = "1.23E01"; $b = (double)$a; var_dump($b); $a = "5.5E-5"; $b = (float)$a; var_dump($b); ?>
它将产生以下输出:
float(12.3) float(5.5E-5)
浮点数后面的所有非数字字符都将被忽略。类似地,如果字符串以任何非数字字符开头,则字符串将转换为“0”。请看下面的示例:
<?php $a = "295.95 only"; $b = (double)$a; var_dump($b); $a = "$2.50"; $b = (float)$a; var_dump($b); ?>
它将产生以下输出:
float(295.95) float(0)
转换为字符串类型
通过使用转换运算符,任何计算结果为浮点数或整数的表达式都可以转换为字符串类型。以下是一些示例:
<?php $a = 100; $b = (string)$a; var_dump($b); $x = 55.50; $y = (string)$x; var_dump($y); ?>
您将获得以下输出:
string(3) "100" string(4) "55.5"
转换为布尔类型
任何非零数字(整数或浮点数)都将使用 (bool) 运算符转换为 true。计算结果为“0”的表达式返回 false。字符串始终转换为 true。
请看下面的示例:
<?php $a = 100; $b = (bool)$a; $x = 0; $y = (bool)$x; $m = "Hello"; $n = (bool)$m; var_dump($b); var_dump($y); var_dump($n); ?>
它将产生以下输出:
bool(true) bool(false) bool(true)
类型转换函数
PHP 包含以下用于执行类型转换的内置函数:
intval()
floatval()
strval()
让我们详细讨论这些内置函数。
intval() 函数
此函数获取变量的整数值。
intval(mixed $value, int $base = 10): int
$base 参数默认为 10,这意味着该值将转换为十进制数。
如果该值是浮点数,则 intval() 函数返回一个整数,丢弃小数部分。
数字的字符串表示形式返回相应的整数,忽略小数部分(如有)。
如果值为包含有效八进制数的字符串且基数为 8,则 intval() 函数返回相应的八进制数。
当基数为“0”时,值的转换基于字符前缀进行。
如果值以 0X 或 0x 开头,则返回十六进制数。
如果值以 0B 或 0b 开头,则返回二进制数。
如果值以 0 开头,则函数返回八进制数。
intval() 函数对于 true 布尔值返回 1,对于 false 布尔值返回 0。
示例
以下示例演示了 intval() 函数的工作方式:
<?php echo intval(42). PHP_EOL; echo intval(4.2). PHP_EOL; echo intval('42') . PHP_EOL; echo intval(042) . PHP_EOL; # 0ctal number echo intval('042', 0) . PHP_EOL; # 0ctal number echo intval('42', 8) . PHP_EOL; # octal echo intval(0x1A) . PHP_EOL; # Hexadecimal echo intval('0x1A', 16) . PHP_EOL; # Hexadecimal echo intval('0x1A', 0) . PHP_EOL; # Hexadecimal echo intval(false) . PHP_EOL; echo intval(true) . PHP_EOL; ?>
它将产生以下输出:
42 4 42 34 34 34 26 26 26 0 1
floatval() 函数
floatval() 函数获取表达式的浮点值。
floatval(mixed $value): float
值可以是任何标量变量。包含非数字字符的字符串返回“0”。包含数字表示或以数字表示作为起始子字符串的字符串返回相应的数字。以下示例演示了 floatval() 函数的工作方式:
<?php echo floatval(42). PHP_EOL; echo floatval(4.2). PHP_EOL; echo floatval('42') . PHP_EOL; echo floatval('99.90 Rs') . PHP_EOL; echo floatval('$100.50') . PHP_EOL; echo floatval('ABC123!@#') . PHP_EOL; echo (true) . PHP_EOL; ; echo (false) . PHP_EOL; ?>
它将产生以下输出:
42 4.2 42 99.9 0 0 1
doubleval() 函数是 floatval() 函数的别名,因此返回类似的结果。
strval() 函数
strval() 函数获取变量的字符串值。此函数不对返回的值进行任何格式化。
strval(mixed $value): string
要转换为字符串的值可以是任何标量类型、null 或实现 __toString() 方法的对象。请查看以下示例:
<?php echo strval(42). PHP_EOL; echo strval(4.2). PHP_EOL; echo strval(4.2E5) . PHP_EOL; echo strval(NULL) . PHP_EOL; echo (true) . PHP_EOL; echo (false) . PHP_EOL; ?>
它将产生以下输出:
42 4.2 420000 1
以下示例定义了一个实现__toString() 方法的类。
<?php class myclass { public function __toString() { return __CLASS__; } } echo strval(new myclass); ?>
这里,您将获得以下输出:
myclass