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 相关文章推荐
php5.3 不支持 session_register() 此函数已启用的解决方法
Nov 12 PHP
destoon官方标签大全
Jun 20 PHP
PHP生成二维码的两个方法和实例
Jul 01 PHP
php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法
Nov 04 PHP
php实现递归与无限分类的方法
Feb 16 PHP
PHP中如何使用session实现保存用户登录信息
Oct 20 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
Dec 08 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
Nov 20 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
May 02 PHP
PHP正则匹配操作简单示例【preg_match_all应用】
Jul 10 PHP
PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板功能示例
May 23 PHP
PHP count()函数讲解
Feb 03 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中文本操作的类
2007/03/17 PHP
mysql总结之explain
2012/02/27 PHP
js保存当前路径(cookies记录)
2010/12/14 Javascript
实现点击列表弹出列表索引的两种方式
2013/03/08 Javascript
js判断运行jsp页面的浏览器类型以及版本示例
2013/10/30 Javascript
jquery让返回的内容显示在特定div里(代码少而精悍)
2014/06/23 Javascript
Javascript中的Callback方法浅析
2015/03/15 Javascript
浏览器中url存储的JavaScript实现
2015/07/07 Javascript
jQuery 翻页组件yunm.pager.js实现div局部刷新的思路
2016/08/11 Javascript
详解微信小程序实现WebSocket心跳重连
2018/07/31 Javascript
Angular使用cli生成自定义文件、组件的方法
2018/09/04 Javascript
JavaScript时间与时间戳的转换操作实例分析
2018/12/07 Javascript
vue实现将一个数组内的相同数据进行合并
2019/11/07 Javascript
javascript的delete运算符知识点总结
2019/11/19 Javascript
node.js使用mongoose操作数据库实现购物车的增、删、改、查功能示例
2019/12/23 Javascript
jQuery实现图片切换效果
2020/10/19 jQuery
[52:39]完美世界DOTA2联赛PWL S3 CPG vs Forest 第一场 12.16
2020/12/17 DOTA
python解析json实例方法
2013/11/19 Python
python写的一个文本编辑器
2014/01/23 Python
Python学习小技巧之列表项的排序
2017/05/20 Python
python操作oracle的完整教程分享
2018/01/30 Python
matplotlib绘制正余弦曲线图的实现
2021/02/22 Python
阿玛尼化妆品美国官网:Giorgio Armani Beauty
2017/02/02 全球购物
Willer台湾:日本高速巴士/夜行巴士预约
2017/07/09 全球购物
TripAdvisor德国:全球领先的旅游网站
2017/12/07 全球购物
Sneaker Studio罗马尼亚网站:购买运动鞋
2018/11/04 全球购物
解释i节点在文件系统中的作用
2013/11/26 面试题
创业计划实施的7大步骤
2014/02/05 职场文书
大学军训感言200字
2014/02/26 职场文书
七夕相亲活动策划方案
2014/08/31 职场文书
幼儿教师辞职信范文
2015/03/02 职场文书
公司员工违纪检讨书
2015/05/05 职场文书
行政申诉状范文
2015/05/20 职场文书
2015年学校政教工作总结
2015/07/20 职场文书
2016年五一劳动节专题校园广播稿
2015/12/17 职场文书
vue实现滑动解锁功能
2022/03/03 Vue.js