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静态类
Nov 25 PHP
php桌面中心(一) 创建数据库
Mar 11 PHP
解析PHP将对象转换成数组的方法(兼容多维数组类型)
Jun 21 PHP
九个你必须知道而且又很好用的php函数和特点
Aug 08 PHP
js+php实现静态页面实时调用用户登陆状态的方法
Jan 04 PHP
php中explode的负数limit用法分析
Feb 27 PHP
PHP简单实现生成txt文件到指定目录的方法
Apr 25 PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
Jan 29 PHP
php中file_get_contents()函数用法实例
Feb 21 PHP
Laravel框架中缓存的使用方法分析
Sep 06 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
Sep 09 PHP
php使用redis的几种常见操作方式和用法示例
Feb 20 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
win7 64位系统 配置php最新版开发环境(php+Apache+mysql)
2014/08/15 PHP
php简单统计字符串单词数量的方法
2015/06/19 PHP
PHP上传文件参考配置大文件上传
2015/12/16 PHP
jQuery Select(单选) 模拟插件 V1.3.62 改进版
2010/07/17 Javascript
JavaScript 拾碎[三] 使用className属性
2010/10/16 Javascript
javascript中关于break,continue的特殊用法与介绍
2012/05/24 Javascript
js 为label标签和div标签赋值的方法
2013/08/08 Javascript
js控制页面控件隐藏显示的两种方法介绍
2013/10/09 Javascript
JS图片自动轮换效果实现思路附截图
2014/04/30 Javascript
jquery动态调整div大小使其宽度始终为浏览器宽度
2014/06/06 Javascript
jquery中用jsonp实现搜索框功能
2016/10/18 Javascript
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
JS查找数组中重复元素的方法详解
2017/06/14 Javascript
判断jQuery是否加载完成,没完成继续判断的解决方法
2017/12/06 jQuery
解决低版本的浏览器不支持es6的import问题
2018/03/09 Javascript
vue axios请求拦截实例代码
2018/03/29 Javascript
vue中post请求以a=a&amp;b=b 的格式写遇到的问题
2018/04/27 Javascript
基于Vue实现可以拖拽的树形表格实例详解
2018/10/18 Javascript
微信小程序 setData 对 data数据影响问题
2019/04/18 Javascript
NodeJs 模仿SIP话机注册的方法
2019/06/21 NodeJs
layui问题之渲染数据表格时,仅出现10条数据的解决方法
2019/09/12 Javascript
12 种使用Vue 的最佳做法
2020/03/30 Javascript
[01:03:51]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第三场
2018/04/09 DOTA
Python生成器定义与简单用法实例分析
2018/04/30 Python
python实现机器学习之多元线性回归
2018/09/06 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
2019/09/18 Python
Python识别验证码的实现示例
2020/09/30 Python
Css3新特性应用之视觉效果实例
2016/12/12 HTML / CSS
英国在线照明超市:Castlegate Lights
2019/10/30 全球购物
意大利网上药房:Farmacia 33
2020/01/27 全球购物
编辑求职信样本
2013/12/16 职场文书
出生证明公证书
2014/04/09 职场文书
投资意向书
2014/07/30 职场文书
庆元旦主持词
2015/07/06 职场文书
办公用品管理制度
2015/08/04 职场文书
JavaScript函数柯里化
2021/11/07 Javascript