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 相关文章推荐
我常用的几个类
Oct 09 PHP
一个查看session内容的函数
Oct 09 PHP
浏览器关闭后,能继续执行的php函数(ignore_user_abort)
Aug 01 PHP
关于js与php互相传值的介绍
Jun 25 PHP
php根据指定位置和长度获得子字符串的方法
Mar 17 PHP
php里array_work用法实例分析
Jul 13 PHP
PHP5.5.15+Apache2.4.10+MySQL5.6.20配置方法分享
May 06 PHP
Yii框架表单提交验证功能分析
Jan 07 PHP
PHP空值检测函数与方法汇总
Nov 19 PHP
PHP根据key删除数组中指定的元素
Feb 28 PHP
PHP 命名空间和自动加载原理与用法实例分析
Apr 29 PHP
基于PHP实现邮箱验证激活过程详解
Oct 28 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
用Socket发送电子邮件(利用需要验证的SMTP服务器)
2006/10/09 PHP
PHP开发中AJAX技术的简单应用
2015/12/11 PHP
解决 FireFox 下[使用event很麻烦] 的问题.
2006/08/22 Javascript
JavaScript下通过的XMLHttpRequest发送请求的代码
2011/06/28 Javascript
js控制表单奇偶行样式的简单方法
2013/07/31 Javascript
基于JQuery实现的图片自动进行缩放和裁剪处理
2014/01/31 Javascript
jquery退出each循环的写法
2014/02/26 Javascript
js实现点击链接后延迟3秒再跳转的方法
2015/06/05 Javascript
js一维数组、多维数组和对象的混合使用方法
2016/04/03 Javascript
jQuery+json实现动态创建复杂表格table的方法
2016/10/25 Javascript
浅谈vue中数据双向绑定的实现原理
2017/09/14 Javascript
js中获取URL参数的共用方法getRequest()方法实例详解
2018/10/24 Javascript
基于JavaScript canvas绘制贝塞尔曲线
2018/12/25 Javascript
小程序显示弹窗时禁止下层的内容滚动实现方法
2019/03/20 Javascript
webpack项目使用eslint建立代码规范实现
2019/05/16 Javascript
Mpvue中使用Vant Weapp组件库的方法步骤
2019/05/16 Javascript
vue跳转同一个组件,参数不同,页面接收值只接收一次的解决方法
2019/11/05 Javascript
vue 插槽简介及使用示例
2020/11/19 Vue.js
[01:51]2014DOTA2国际邀请赛 这个赛场没有失败者VGTi5再见
2014/07/23 DOTA
[02:09]EHOME夺得首届辉夜杯冠军—现场颁奖仪式
2015/12/28 DOTA
Python的math模块中的常用数学函数整理
2016/02/04 Python
Python绘制3d螺旋曲线图实例代码
2017/12/20 Python
python删除本地夹里重复文件的方法
2020/11/19 Python
在python中以相同顺序shuffle两个list的方法
2018/12/13 Python
Python爬虫 bilibili视频弹幕提取过程详解
2019/07/31 Python
python爬虫 模拟登录人人网过程解析
2019/07/31 Python
快速查找Python安装路径方法
2020/02/06 Python
加拿大品牌鞋包连锁店:Little Burgundy
2021/02/28 全球购物
电子技术专业中专生的自我评价
2013/12/17 职场文书
留学推荐信怎么写
2014/01/25 职场文书
四风问题对照检查整改措施思想报告
2014/10/05 职场文书
python图片灰度化处理的几种方法
2021/06/23 Python
关于CSS浮动与取消浮动的问题
2021/06/28 HTML / CSS
Pyqt5将多个类组合在一个界面显示的完整示例
2021/09/04 Python
如何在python中实现ECDSA你知道吗
2021/11/23 Python
SpringBoot项目部署到阿里云服务器的实现步骤
2022/06/28 Java/Android