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 相关文章推荐
一个简单的PHP入门源程序
Oct 09 PHP
php adodb操作mysql数据库
Mar 19 PHP
php 引用(&amp;)详解
Nov 20 PHP
php xml常用函数的集合(比较详细)
Jun 06 PHP
php简单实现多字节字符串翻转的方法
Mar 31 PHP
PHP操作mysql数据库分表的方法
Jun 09 PHP
php opendir()列出目录下所有文件的实例代码
Oct 02 PHP
php基于curl实现的股票信息查询类实例
Nov 11 PHP
php微信公众平台示例代码分析(二)
Dec 06 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
Dec 12 PHP
浅谈PHP封装CURL
Mar 06 PHP
PHP+Apache实现二级域名之间共享cookie的方法
Jul 24 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
中国第一家无线电行
2021/03/01 无线电
php&amp;java(二)
2006/10/09 PHP
php的access操作类
2008/04/09 PHP
PHP自定义大小验证码的方法详解
2013/06/07 PHP
php CI框架插入一条或多条sql记录示例
2014/07/29 PHP
WordPress后台中实现图片上传功能的实例讲解
2016/01/11 PHP
PHP超全局变量实现原理及代码解析
2020/09/01 PHP
javascript开发中因空格引发的错误
2010/11/08 Javascript
Javascript在IE下设置innerHTML时出现未知的运行时错误的解决方法
2011/01/12 Javascript
深入理解JavaScript系列(33):设计模式之策略模式详解
2015/03/03 Javascript
js由下向上不断上升冒气泡效果实例
2015/05/07 Javascript
常用js,css文件统一加载方法(推荐) 并在加载之后调用回调函数
2016/09/23 Javascript
利用js+css+html实现固定table的列头不动
2016/12/08 Javascript
JavaScript的六种继承方式(推荐)
2017/06/26 Javascript
JavaScript中常见的八个陷阱总结
2017/06/28 Javascript
详解vuex之store源码简单解析
2019/06/13 Javascript
8个有意思的JavaScript面试题
2019/07/30 Javascript
在vue中实现清除echarts上次保留的数据(亲测有效)
2020/09/09 Javascript
[07:27]DOTA2卡尔工作室 英雄介绍水晶室女篇
2013/06/21 DOTA
Python中关于使用模块的基础知识
2015/05/24 Python
Python的Flask开发框架简单上手笔记
2015/11/16 Python
分享Python文本生成二维码实例
2016/01/06 Python
python先序遍历二叉树问题
2017/11/10 Python
教你使用python画一朵花送女朋友
2018/03/29 Python
如何基于python实现画不同品种的樱花树
2020/01/03 Python
Python实现Kerberos用户的增删改查操作
2020/12/14 Python
详解html5页面 rem 布局适配方法
2018/01/12 HTML / CSS
世界上最大的隐形眼镜商店:1-800 Contacts
2018/11/03 全球购物
WINDOWS域的具体实现方式是什么
2014/02/20 面试题
应用化学专业职业生涯规划书
2014/01/22 职场文书
红旗团支部事迹材料
2014/01/27 职场文书
学校对教师的评语
2014/04/28 职场文书
开展党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2014年作风建设工作总结
2014/10/29 职场文书
商业门面租房协议书
2014/11/25 职场文书
《和时间赛跑》读后感3篇
2019/12/16 职场文书