PHP对字符串的递增运算分析


Posted in PHP onAugust 08, 2010

有同学问了一个问题:

<?php 
for($i = 'A'; $i <= 'Z'; $i++) { 
echo $i; 
}

输出是啥?

输出是:

ABCDEFGHIJKLMNOPQRSTUVWXYZAAABACADAEAFAGAHAIAJAKALAMANAOAPAQARAS…….

为啥?

其实很简单, PHP的手册中也有说明, 只不过恐怕很多人不会一章一节的把手册仔细阅读一遍:

PHP follows Perl's convention when dealing with arithmetic operations on character variables and not C's. For example, in Perl ‘Z'+1 turns into ‘AA', while in C ‘Z'+1 turns into ‘[‘ ( ord(‘Z') == 90, ord(‘[‘) == 91 ). Note that character variables can be incremented but not decremented and even so only plain ASCII characters (a-z and A-Z) are supported.

在处理字符变量的算数运算时,PHP 沿袭了 Perl 的习惯,而非 C 的。例如,在 Perl 中 ‘Z'+1 将得到 ‘AA',而在 C 中,'Z'+1 将得到 ‘[‘(ord(‘Z') == 90,ord(‘[‘) == 91)。注意字符变量只能递增,不能递减,并且只支持纯字母(a-z 和 A-Z)。

也就是说, 如果:

$name = "laruence"; 
++$name; //将会是"laruencf"

而:
$name = "laruence"; 
--$name; //没有影响, 还是"laruence"

所以, 这个问题的原因就是当$i = Z的时候, ++$i成了AA, 而字符串比较的话,
AA,BB,XX一直到YZ都是小于等于Z的… so..
PHP 相关文章推荐
用Socket发送电子邮件(利用需要验证的SMTP服务器)
Oct 09 PHP
linux php mysql数据库备份实现代码
Mar 10 PHP
PHP中usort在值相同时改变原始位置问题的解决方法
Nov 27 PHP
探讨如何把session存入数据库
Jun 07 PHP
PHP加密函数 Javascript/Js 解密函数
Sep 23 PHP
php类声明和php类使用方法示例分享
Mar 29 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
Apr 29 PHP
php实现的简单日志写入函数
Mar 31 PHP
php ci 获取表单中多个同名input元素值的代码
Mar 25 PHP
PHP基于递归算法解决兔子生兔子问题
May 11 PHP
PHP中命名空间的使用例子
Mar 22 PHP
PHP抽象类和接口用法实例详解
Jul 20 PHP
PHP原理之异常机制深入分析
Aug 08 #PHP
php include加载文件两种方式效率比较
Aug 08 #PHP
将一维或多维的数组连接成一个字符串的php代码
Aug 08 #PHP
php简单提示框alert封装函数
Aug 08 #PHP
php递归实现无限分类生成下拉列表的函数
Aug 08 #PHP
php用数组返回无限分类的列表数据的代码
Aug 08 #PHP
php自定义函数之递归删除文件及目录
Aug 08 #PHP
You might like
PHP去除数组中重复的元素并按键名排序函数
2008/08/18 PHP
php更改目录及子目录下所有的文件后缀的代码
2010/09/24 PHP
php中strstr、strrchr、substr、stristr四个函数的区别总结
2014/09/22 PHP
谈谈 PHP7新增功能
2015/12/16 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
2018/05/23 PHP
JavaScript中用于四舍五入的Math.round()方法讲解
2015/06/15 Javascript
JavaScript中this的用法实例分析
2016/12/19 Javascript
vue mixins组件复用的几种方式(小结)
2017/09/06 Javascript
Angular利用trackBy提升性能的方法
2018/01/26 Javascript
解决VUE框架 导致绑定事件的阻止冒泡失效问题
2018/02/24 Javascript
json对象及数组键值的深度大小写转换问题详解
2018/03/30 Javascript
vue 实现单选框设置默认选中值
2019/11/07 Javascript
Vue中常用rules校验规则(实例代码)
2019/11/14 Javascript
[01:04]DOTA2:伟大的Roshan雕塑震撼来临
2015/01/30 DOTA
[00:10]DOTA2全国高校联赛速递
2018/05/30 DOTA
用map函数来完成Python并行任务的简单示例
2015/04/02 Python
解决Python requests 报错方法集锦
2017/03/19 Python
python selenium 获取标签的属性值、内容、状态方法
2018/06/22 Python
用xpath获取指定标签下的所有text的实例
2019/01/02 Python
django连接oracle时setting 配置方法
2019/08/29 Python
keras获得model中某一层的某一个Tensor的输出维度教程
2020/01/24 Python
Django模型中字段属性choice使用说明
2020/03/30 Python
基于python 凸包问题的解决
2020/04/16 Python
英国儿童图书网站:Scholastic
2017/03/26 全球购物
Melissa鞋英国官方网站:Nonnon
2019/05/01 全球购物
戴森英国官网:Dyson英国
2019/05/07 全球购物
俄罗斯金苹果网上化妆品和香水商店:Goldapple
2019/12/01 全球购物
Linux开机引导的步骤是什么
2015/10/19 面试题
GC是什么?为什么要有GC?
2013/12/08 面试题
出生公证委托书
2014/04/03 职场文书
小学生环保倡议书
2014/05/15 职场文书
2014年人大工作总结
2014/12/10 职场文书
2015年化验室工作总结
2015/04/23 职场文书
导游词之山东红叶谷
2019/10/31 职场文书
MySQL多表查询机制
2022/03/17 MySQL
Python读写yaml文件
2022/03/20 Python