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调用三种数据库的方法(2)
Oct 09 PHP
PHP数组及条件,循环语句学习
Nov 11 PHP
探讨多键值cookie(php中cookie存取数组)的详解
Jun 06 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
Jun 25 PHP
PHPThumb图片处理实例
May 03 PHP
PHP与MYSQL中UTF8 中文排序示例代码
Oct 23 PHP
Java和PHP在Web开发方面对比分析
Mar 01 PHP
PHP 使用二进制保存用户状态的实例
Jan 29 PHP
PHP简单实现记录网站访问量功能示例
Jun 06 PHP
PHP面向对象程序设计内置标准类,普通数据类型转为对象类型示例
Jun 12 PHP
PHP封装cURL工具类与应用示例
Jul 01 PHP
is_file和file_exists效率比较
Mar 14 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 获取一个月第一天与最后一天的代码
2010/05/16 PHP
如何使用PHP批量去除文件UTF8 BOM信息
2013/08/05 PHP
实现PHP+Mysql无限分类的方法汇总
2015/03/02 PHP
php截取指定2个字符之间字符串的方法
2015/04/15 PHP
记录Yii2框架开发微信公众号遇到的问题及解决方法
2018/07/20 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
2019/08/05 PHP
thinkPHP3.2使用RBAC实现权限管理的实现
2019/08/27 PHP
js 函数的副作用分析
2011/08/23 Javascript
jqGrid jQuery 表格插件测试代码
2011/08/23 Javascript
javascript中的window.location.search方法简介
2013/09/02 Javascript
Javascript数组Array方法解读
2016/03/13 Javascript
Bootstrap编写一个同时适用于PC、平板、手机的登陆页面
2016/06/30 Javascript
input file上传 图片预览功能实例代码
2016/10/25 Javascript
jQuery插件zTree实现的多选树效果示例
2017/03/08 Javascript
JS中的数组转变成JSON格式字符串的方法
2017/05/09 Javascript
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
2017/10/10 Javascript
又拍云 Node.js 实现文件上传、删除功能
2018/10/28 Javascript
vue项目中axios请求网络接口封装的示例代码
2018/12/18 Javascript
JavaScript创建对象方式总结【工厂模式、构造函数模式、原型模式等】
2018/12/19 Javascript
vue鼠标悬停事件实例详解
2019/04/01 Javascript
微信小程序webview与h5通过postMessage实现实时通讯的实现
2019/08/20 Javascript
浅谈Python程序与C++程序的联合使用
2015/04/07 Python
python使用装饰器作日志处理的方法
2019/07/11 Python
Python封装成可带参数的EXE安装包实例
2019/08/24 Python
解决Pycharm 导入其他文件夹源码的2种方法
2020/02/12 Python
pandas apply使用多列计算生成新的列实现示例
2021/02/24 Python
关于css兼容性问题及一些常见问题汇总
2016/05/03 HTML / CSS
CSS3动画:5种预载动画效果实例
2017/04/05 HTML / CSS
请说出几个常用的异常类
2013/01/08 面试题
酒店优秀员工事迹材料
2014/06/02 职场文书
教师党员个人整改措施材料
2014/09/16 职场文书
怎么写工作检讨书
2014/11/16 职场文书
2014年药品销售工作总结
2014/12/16 职场文书
幼儿园教师师德表现自我评价
2015/03/05 职场文书
敬老院义诊活动总结
2015/05/07 职场文书
如何解决springcloud feign 首次调用100%失败的问题
2021/06/23 Java/Android