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 相关文章推荐
通过ODBC连接的SQL SERVER实例
Oct 09 PHP
怎样在php中使用PDF文档功能
Oct 09 PHP
PHP 命令行参数详解及应用
May 18 PHP
PHP explode()函数用法、切分字符串
Oct 03 PHP
在wamp集成环境下升级php版本(实现方法)
Jul 01 PHP
php使用sql数据库 获取字段问题介绍
Aug 12 PHP
php获取网页请求状态程序示例
Jun 17 PHP
PHP中SSO Cookie登录分析和实现
Nov 06 PHP
Linux环境下php实现给网站截图的方法
May 03 PHP
CI框架中数据库操作函数$this-&gt;db-&gt;where()相关用法总结
May 17 PHP
PHP 数组基本操作方法详解
Jun 17 PHP
关于laravel模板中生成URL的几种模式总结
Oct 18 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
linux下使用ThinkPHP需要注意大小写导致的问题
2011/08/02 PHP
PHP正则表达式替换站点关键字链接后空白的解决方法
2014/09/16 PHP
php中smarty区域循环的方法
2015/06/11 PHP
浅谈PHP中的数据传输CURL
2016/09/06 PHP
PHP单例模式简单用法示例
2017/06/23 PHP
热点新闻滚动特效的js代码
2013/08/17 Javascript
jquery dialog open后,服务器端控件失效的快速解决方法
2013/12/19 Javascript
Javascript writable特性介绍
2015/02/27 Javascript
jQuery实现根据类型自动显示和隐藏表单
2015/03/18 Javascript
JavaScript实现身份证验证代码
2016/02/17 Javascript
javascript创建对象的3种方法
2016/11/02 Javascript
js拖拽功能实现代码解析
2016/11/28 Javascript
详解堆的javascript实现方法
2016/11/29 Javascript
移动端手指放大缩小插件与js源码
2017/05/22 Javascript
详解基于vue-cli优化的webpack配置
2017/11/06 Javascript
彻底理解js面向对象之继承
2018/02/04 Javascript
vue.js做一个简单的编辑菜谱功能
2018/05/08 Javascript
关于jquery中attr()和prop()方法的区别
2018/05/28 jQuery
js for终止循环 跳出多层循环
2018/10/04 Javascript
[03:57]2016完美“圣”典风云人物:rOtk专访
2016/12/09 DOTA
tornado框架blog模块分析与使用
2013/11/21 Python
将图片文件嵌入到wxpython代码中的实现方法
2014/08/11 Python
python实现多线程暴力破解登陆路由器功能代码分享
2015/01/04 Python
Python下实现的RSA加密/解密及签名/验证功能示例
2017/07/17 Python
在Pycharm中使用GitHub的方法步骤
2019/06/13 Python
python实现ftp文件传输功能
2020/03/20 Python
Python把图片转化为pdf代码实例
2020/07/28 Python
Pycharm自动添加文件头注释和函数注释参数的方法
2020/10/23 Python
英国第一摩托车和摩托车越野配件商店:GhostBikes
2019/03/10 全球购物
Python如何定义一个函数
2015/09/01 面试题
机电专业体育教师求职信
2013/09/21 职场文书
关爱留守儿童标语
2014/06/18 职场文书
平安工地汇报材料
2014/08/19 职场文书
校园学雷锋广播稿
2014/10/08 职场文书
第二次离婚起诉书
2015/05/18 职场文书
工作简报格式范文
2015/07/21 职场文书