PHP 字符串的隐式转换规则以及针对包含字母的字符串的递增/递减操作
PHP 操作 字符串 以及 包含 针对 字母 递增
2023-09-11 14:17:02 时间
之前一直对 PHP 中关于字符串的算数运算隐式类型转换规则和递增/递减操作符针对字符串的操作比较模糊,今天总结一下。
一、隐式转换
二进制算术运算符的隐式类型转换规则(http://php.net/manual/zh/language.types.string.php)
第一个操作数类型 | 第二个操作数类型 | 类型转换 |
整型 | 浮点型 | 整型转换为浮点型 |
整型 | 字符串 | 字符串转换为数字,如果字符串转换后是浮点型,整型也会转换为浮点型 |
浮点型 | 字符串 | 字符串转换为浮点型 |
总结一下就是浮点型 > 整型 > 字符串。例如:
整型 + 浮点型 = 浮点型
$a = 12; $b = 1.5; $c = $a + $b; var_dump($c); // float 13.5
整型 + (非 数字和. 开头的)字符串 = 整型
$a = 12; $b = 'hello1.5'; $c = $a + $b; var_dump($c); // int 12
这里 $b 从字符串转换成整型后变成了 0
整型 + 浮点型数字开头的字符串 = 浮点型
$a = 12; $b = '1.5hello'; $c = $a + $b; var_dump($c); // float 13.5
$b 自动转换成了 float 1.5
整型 + 整型数字开头的字符串 = 整型
$a = 12; $b = '1hello'; $c = $a + $b; var_dump($c); // int 13
整型 + 浮点型数字的字符串 = 浮点型
$a = 12; $b = '1.5'; $c = $a + $b; var_dump($c); // float 13.5
整型 + (以.开头的)字符串 = 浮点型 或 整型
$a = 12; $b = '.5hello'; $c = $a + $b; var_dump($c); // float 12.5
$b 转换成了 0.5
$a = 12; $b = '.hello'; $c = $a + $b; var_dump($c); // int 12
$b 不会转换为 float 0.0 而是转换成 int 0
整型 + 包含大写 E 或小写 e 的字符串(需要满足科学记数法的格式,必须要有尾数) = 浮点型
$a = 1; $b = '1e3'; $c = $a + $b; var_dump($c); // float 1001
$a = 1; $b = '1e-3'; $c = $a + $b; var_dump($c); // float 1.001
整型 + 十六进制数字的字符串 = 整型
$a = 1; $b = '0x10'; $c = $a + $b; var_dump($c); // int 17
二、自动递增/递减操作符
字母的自动递增
自动递增 | 结果 |
"a" | "b" |
"z" | "aa" |
"spaz" | "spba" |
"b9" | "c0" |
"12" | "13" |
例1:一个字母进行递增,结果是它在字母表中的下一个字母
$a = 'a'; var_dump(++$a); // string 'b' (length=1)
例2:
$a = 'a'; var_dump(--$a); // string 'a' (length=1)
例3:"z" 或 "Z" 进行递增,会变成 "a" 或 "A",且字符左边的字符再递增(如果结果的 "a" 或 "A" 位于字符串左边第一个字符,那么还需要在它的左边再插入一个 "a" 或 "A")
$a = 'z'; var_dump(++$a); // string 'aa' (length=2)
例4:
$a = 'z1'; var_dump(++$a); // string 'z2' (length=2)
例5:
$a = 'z9'; var_dump(++$a); // string 'aa0' (length=3)
例6:
$a = 'b9'; var_dump(++$a); // string 'c0' (length=2)
例7:
$a = 'spaz'; var_dump(++$a); // string 'spba' (length=4)
例8:
$a = 'bz'; var_dump(++$a); // string 'ca' (length=2)
例9:
$a = '1z'; var_dump(++$a); // string '2a' (length=2)
例10:
$a = '*a'; var_dump(++$a); // string '*b' (length=2)
例11:
$a = '*a*'; var_dump(++$a); // string '*a*' (length=3)
例12:
$a = 'a*'; var_dump(++$a); // string 'a*' (length=2)
相关文章
- php 一个文件搞定支付宝支付,微信支付
- php yii2 使用命令行模式开启脚本 报错 :Error while sending QUERY packet. PID=xxx
- php 腾讯云 对象存储V5版本 获取返回的上传文件的链接方法
- PHP常用字符串的操作函数
- php中如何配置Cookie加密
- PHP Socket编程 之 fsockopen链接https时OpenSSL错误
- php+tcpdf如何把生成的pdf文件保存在服务端
- php:如何使用PHP排序, key为字母+数字的数组(多维数组)
- PHP的数组操作
- php操作成功返回当前页并刷新
- 整理了一份比较全面的PHP开发编码规范.
- PHP PDO_MYSQL 操作类 YAF嵌入高性能类而准备
- PHP之CI框架架设错误--Only variable references should be returned by reference
- PHP文件下载过滤类
- php解析mpp文件中的资源
- php类库PHP QR Code 二维码
- [php-src] 窥探Php内核中的数组与面向对象
- [转]php 操作数组 (合并,拆分,追加,查找,删除等)
- Atitit 业务流程执行引擎的实现 目录 1.1. 引擎实现语言java js php等1 1.2. 流程语言 xml sql js等 业务流程定义语言规范总结1 1.3. 实体方法定义2
- Atitit. 注册表操作查询 修改 api与工具总结 java c# php js python 病毒木马的原理
- php操作mongodb
- PHP PSR-1 基本代码规范(中文版)
- PHP 字符串与文件操作