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 相关文章推荐
配置Apache2.2+PHP5+CakePHP1.2+MySQL5运行环境
Apr 25 PHP
PHP下编码转换函数mb_convert_encoding与iconv的使用说明
Dec 16 PHP
php session和cookie使用说明
Apr 07 PHP
PHP中用正则表达式清除字符串的空白
Jan 17 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
May 29 PHP
Codeigniter注册登录代码示例
Jun 12 PHP
ThinkPHP之import方法实例详解
Jun 20 PHP
判断、添加和删除WordPress置顶文章的相关PHP函数小结
Dec 10 PHP
PHP书写格式详解(必看)
May 23 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
Jun 07 PHP
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
Oct 11 PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
Oct 15 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
php4的彩蛋
2006/10/09 PHP
php中实现简单的ACL 完结篇
2011/09/07 PHP
PHP批量生成静态HTML的简单原理和方法
2014/04/20 PHP
如何修改Laravel中url()函数生成URL的根地址
2017/08/11 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
2018/09/07 PHP
jQuery超酷平面式时钟效果代码分享
2020/03/30 Javascript
jQuery插件扩展实例【添加回调函数】
2016/11/26 Javascript
JS三目运算(三元运算)方法详解
2017/03/01 Javascript
AngularJS获取json数据的方法详解
2017/05/27 Javascript
关于js中的鼠标事件总结
2017/07/11 Javascript
angular.js中解决跨域问题的三种方式
2017/07/12 Javascript
JSON创建键值对(key是中文或者数字)方式详解
2017/08/24 Javascript
详解jQuery中的prop()使用方法
2020/01/05 jQuery
jquery实现两个div中的元素相互拖动的方法分析
2020/04/05 jQuery
JS严格模式原理与用法实例分析
2020/04/27 Javascript
小程序实现上传视频功能
2020/08/18 Javascript
jQuery是用来干什么的 jquery其实就是一个js框架
2021/02/04 jQuery
JavaScript使用setTimeout实现倒计时效果
2021/02/19 Javascript
vue+flask实现视频合成功能(拖拽上传)
2021/03/04 Vue.js
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
详解Python的Django框架中Manager方法的使用
2015/07/21 Python
python自定义异常实例详解
2017/07/11 Python
python中验证码连通域分割的方法详解
2018/06/04 Python
一篇文章搞定Python操作文件与目录
2019/08/13 Python
什么是python的id函数
2020/06/11 Python
详解python metaclass(元类)
2020/08/13 Python
Python定时任务框架APScheduler原理及常用代码
2020/10/05 Python
法国足球商店:Footcenter
2019/07/06 全球购物
全球工业:Global Industrial
2020/02/01 全球购物
27个经典Linux面试题及答案,你知道几个?
2013/01/10 面试题
手工社团活动方案
2014/02/17 职场文书
学生吸烟检讨书
2014/09/14 职场文书
2014年“四风”问题个人整改措施
2014/09/17 职场文书
苦儿流浪记读书笔记
2015/07/01 职场文书
小学运动会入场词
2015/07/18 职场文书
婚宴致辞
2015/07/28 职场文书