PHP下对字符串的递增运算代码


Posted in PHP onAugust 21, 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..

作者: laruence

PHP 相关文章推荐
深入了解php4(1)--回到未来
Oct 09 PHP
php 应用程序安全防范技术研究
Sep 25 PHP
php 获取本机外网/公网IP的代码
May 09 PHP
PHP禁止页面缓存的代码
Oct 23 PHP
如何用phpmyadmin设置mysql数据库用户的权限
Jan 09 PHP
yii框架通过控制台命令创建定时任务示例
Apr 30 PHP
PHP解析html类库simple_html_dom的转码bug
May 22 PHP
PHP中把错误日志保存在系统日志中(Windows系统)
Jun 23 PHP
php+ajax无刷新分页实例详解
Dec 07 PHP
Linux php 中文乱码的快速解决方法
May 13 PHP
Laravel框架路由设置与使用示例
Jun 12 PHP
实例讲解PHP表单验证功能
Feb 15 PHP
深入理解PHP原理之异常机制
Aug 21 #PHP
php中var_export与var_dump的区别分析
Aug 21 #PHP
php visitFile()遍历指定文件夹函数
Aug 21 #PHP
php excel类 phpExcel使用方法介绍
Aug 21 #PHP
php下正则来匹配dede模板标签的代码
Aug 21 #PHP
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
Aug 21 #PHP
使用VisualStudio开发php的图文设置方法
Aug 21 #PHP
You might like
php设计模式 Mediator (中介者模式)
2011/06/26 PHP
微信营销平台系统?刮刮乐的开发
2014/06/10 PHP
php导入模块文件分享
2015/03/17 PHP
在laravel中使用with实现动态添加where条件
2019/10/10 PHP
基于jQuery的弹出消息插件 DivAlert之旅(一)
2010/04/01 Javascript
javascript之AJAX框架使用说明
2010/04/24 Javascript
Javascript图像处理—平滑处理实现原理
2012/12/28 Javascript
JS简单实现动画弹出层效果
2015/05/05 Javascript
当jquery ajax遇上401请求的解决方法
2016/05/19 Javascript
JavaScript函数中关于valueOf和toString的理解
2016/06/14 Javascript
从零学习node.js之详解异步控制工具async(八)
2017/02/27 Javascript
Vuex提升学习篇
2018/01/11 Javascript
微信小程序实现滚动消息通知
2018/02/02 Javascript
jQuery AJAX 方法success()后台传来的4种数据详解
2018/08/08 jQuery
JS实现匀速与减速缓慢运动的动画效果封装示例
2018/08/27 Javascript
Vue.js 时间转换代码及时间戳转时间字符串
2018/10/16 Javascript
实例讲解v-if和v-show的区别
2019/01/31 Javascript
4 种滚动吸顶实现方式的比较
2019/04/09 Javascript
Python isinstance函数介绍
2015/04/14 Python
python实现BackPropagation算法
2017/12/14 Python
Python面向对象之类的内置attr属性示例
2018/12/14 Python
对Python中实现两个数的值交换的集中方法详解
2019/01/11 Python
python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算
2019/07/18 Python
python七种方法判断字符串是否包含子串
2020/08/18 Python
css3模拟jq点击事件的实例代码
2017/07/06 HTML / CSS
Bluebella美国官网:英国性感内衣品牌
2018/10/04 全球购物
如何高效率的查找一个月以内的数据
2012/04/15 面试题
机电专业毕业生推荐信
2013/11/10 职场文书
见习期自我鉴定
2014/01/31 职场文书
党员领导干部承诺书
2014/05/28 职场文书
工地安全标语
2014/06/07 职场文书
小学校园文化建设汇报材料
2014/08/19 职场文书
委托书英文
2015/01/28 职场文书
大学生个人学年总结
2015/02/15 职场文书
MySQL命令无法输入中文问题的解决方式
2021/08/30 MySQL
Mysql多层子查询示例代码(收藏夹案例)
2022/03/31 MySQL