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 相关文章推荐
打造计数器DIY三步曲(下)
Oct 09 PHP
海河写的 Discuz论坛帖子调用js的php代码
Aug 23 PHP
PHP的SQL注入过程分析
Jan 06 PHP
PHP 面向对象详解
Sep 13 PHP
在wamp集成环境下升级php版本(实现方法)
Jul 01 PHP
php通过数组实现多条件查询实现方法(字符串分割)
May 06 PHP
php源码分析之DZX1.5字符串截断函数cutstr用法
Jun 17 PHP
php防止sql注入的方法详解
Feb 20 PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
Jun 29 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
Sep 16 PHP
PHP实现双链表删除与插入节点的方法示例
Nov 11 PHP
Laravel框架之解决前端显示图片问题
Oct 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
PHP生成和获取XML格式数据的方法
2016/03/04 PHP
php进行ip地址掩码运算处理的方法
2016/07/11 PHP
thinkPHP5.0框架引入Traits功能实例分析
2017/03/18 PHP
Laravel事件监听器用法实例分析
2019/03/12 PHP
javascript 显示当前系统时间代码
2009/12/28 Javascript
bgsound 背景音乐 的一些常用方法及特殊用法小结
2010/05/11 Javascript
Jquery刷新页面背景图片随机变换的实现方法
2013/03/15 Javascript
js实现图片在未加载完成前显示加载中字样
2014/09/03 Javascript
不同编码的页面表单数据乱码问题解决方法
2015/02/15 Javascript
基于JavaScript实现定时跳转到指定页面
2016/01/01 Javascript
前端设计师们最常用的JS代码汇总
2016/09/25 Javascript
javascript防篡改对象实例详解
2017/04/10 Javascript
微信小程序实现多选框全选与反全选及购物车中删除选中的商品功能
2019/12/17 Javascript
浅谈JavaScript中你可能不知道URL构造函数的属性
2020/07/13 Javascript
[00:32]2018DOTA2亚洲邀请赛Secret出场
2018/04/03 DOTA
[49:20]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
python使用xlrd与xlwt对excel的读写和格式设定
2017/01/21 Python
Python django实现简单的邮件系统发送邮件功能
2017/07/14 Python
windows下Virtualenvwrapper安装教程
2017/12/13 Python
python爬虫_实现校园网自动重连脚本的教程
2018/04/22 Python
pandas 选取行和列数据的方法详解
2019/08/08 Python
有关Tensorflow梯度下降常用的优化方法分享
2020/02/04 Python
Python selenium 加载并保存QQ群成员,去除其群主、管理员信息的示例代码
2020/05/28 Python
python爬虫---requests库的用法详解
2020/09/28 Python
CSS3实现曲线阴影和翘边阴影
2016/05/03 HTML / CSS
Ever New加拿大官网:彰显女性美
2018/10/05 全球购物
Made in Design德国:设计师家具、灯具和装饰
2019/10/31 全球购物
Unix里面如何在后台运行程序
2016/10/14 面试题
大学生新闻专业个人自我评价
2013/11/12 职场文书
运动会入场口号
2014/06/07 职场文书
单位介绍信格式
2015/01/31 职场文书
我们的节日中秋节活动总结
2015/03/23 职场文书
心理健康教育培训研修感言
2015/11/18 职场文书
敬业奉献模范事迹材料(2016精选版)
2016/02/26 职场文书
面试被问select......for update会锁表还是锁行
2021/11/11 MySQL
Go本地测试解耦任务拆解及沟通详解Go本地测试的思路沟通的重要性总结
2022/06/21 Golang