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生成缩略图的函数代码(修改版)
Jan 18 PHP
WordPress判断用户是否登录的代码
Mar 17 PHP
浅析ThinkPHP中的pathinfo模式和URL重写
Jan 06 PHP
ThinkPHP CURD方法之data方法详解
Jun 18 PHP
PHP中array_map与array_column之间的关系分析
Aug 19 PHP
详解Window7 下开发php扩展
Dec 31 PHP
PHP实现伪静态方法汇总
Jan 13 PHP
CI框架支持$_GET的两种实现方法
May 18 PHP
php 获取文件行数的方法总结
Oct 11 PHP
PHP有序表查找之插值查找算法示例
Feb 10 PHP
thinkPHP框架中执行事务的方法示例
May 31 PHP
PHP whois查询类定义与用法示例
Apr 03 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去除换行(回车换行)的三种方法
2014/03/26 PHP
PHP输入输出流学习笔记
2015/05/12 PHP
PHP SESSION机制的理解与实例
2019/03/22 PHP
新手入门常用代码集锦
2007/01/11 Javascript
WebGame《逆转裁判》完整版 代码下载(1月24日更新)
2007/01/29 Javascript
Jquery 表单取值赋值的一些基本操作
2009/10/11 Javascript
用Greasemonkey 脚本收藏网站会员信息到本地
2009/10/26 Javascript
js设置cookie过期及清除浏览器对应名称的cookie
2013/10/24 Javascript
SeaJS入门教程系列之使用SeaJS(二)
2014/03/03 Javascript
一个通过script自定义属性传递配置参数的方法
2014/09/15 Javascript
jQuery中animate()方法用法实例
2014/12/24 Javascript
arguments对象验证函数的参数是否合法
2015/06/26 Javascript
node.js用fs.rename强制重命名或移动文件夹的方法
2017/12/27 Javascript
详解JSON Web Token 入门教程
2018/07/30 Javascript
基于Angularjs-router动态改变Title值的问题
2018/08/30 Javascript
微信小程序网络层封装的实现(promise, 登录锁)
2019/05/08 Javascript
详解es6新增数组方法简便了哪些操作
2019/05/09 Javascript
vue项目配置使用flow类型检查的步骤
2020/03/18 Javascript
微信小程序实现导航栏和内容上下联动功能代码
2020/06/29 Javascript
python单线程实现多个定时器示例
2014/03/30 Python
Python使用SQLite和Excel操作进行数据分析
2018/01/20 Python
python 移除字符串尾部的数字方法
2018/07/17 Python
使用opencv将视频帧转成图片输出
2019/12/10 Python
Python参数传递实现过程及原理详解
2020/05/14 Python
常用的四种CSS透明属性介绍
2014/04/12 HTML / CSS
北卡罗来纳州豪华家具和家居装饰店:Carolina Rustica
2018/10/30 全球购物
static关键字的用法
2013/10/07 面试题
北京鼎普科技股份有限公司软件测试面试题
2012/04/07 面试题
审计专业自荐信范文
2014/04/21 职场文书
中学生关于梦想的演讲稿
2014/08/22 职场文书
党员个人对照检查材料范文
2014/09/24 职场文书
庆祝新中国成立65周年“向国旗敬礼”网上签名寄语
2014/09/27 职场文书
企业爱心捐款倡议书
2015/04/27 职场文书
2015年校本培训工作总结
2015/07/24 职场文书
2016年中秋节慰问信
2015/12/01 职场文书
Redis实现一个账号只能登录一个设备
2022/04/19 Redis