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 相关文章推荐
通过文字传递创建的图形按钮
Oct 09 PHP
php pcntl_fork和pcntl_fork 的用法
Apr 13 PHP
解析PHP工厂模式的好处
Jun 18 PHP
解析PHP中$_FILES的使用以及注意事项
Jul 05 PHP
配置php网页显示各种语法错误
Sep 23 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
Sep 29 PHP
ThinkPHP自动完成中使用函数与回调方法实例
Nov 29 PHP
php获取QQ头像并显示的方法
Dec 23 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
Jan 07 PHP
php中preg_replace_callback函数简单用法示例
Jul 21 PHP
PHP实现路由映射到指定控制器
Aug 13 PHP
php下的原生ajax请求用法实例分析
Feb 28 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数组函数序列之array_intersect() 返回两个或多个数组的交集数组
2011/11/10 PHP
关于初学PHP时的知识积累总结
2013/06/07 PHP
php实现httpclient类示例
2014/04/08 PHP
Zend Framework页面缓存实例
2014/06/25 PHP
深入理解PHP之OpCode原理详解
2016/06/01 PHP
Thinkphp批量更新数据的方法汇总
2016/06/29 PHP
Swoole4.4协程抢占式调度器详解
2019/05/23 PHP
JavaScript入门教程(7) History历史对象
2009/01/31 Javascript
在js文件中如何获取basePath处理js路径问题
2013/07/10 Javascript
javascript浏览器窗口之间传递数据的方法
2015/01/20 Javascript
JS脚本根据手机浏览器类型跳转WAP手机网站(两种方式)
2015/08/04 Javascript
jQuery简单操作cookie的插件实例
2016/01/13 Javascript
angular基于路由控制ui-router实现系统权限控制
2016/09/27 Javascript
JavaScript trim 实现去除字符串首尾指定字符的简单方法
2016/12/27 Javascript
ajax 提交数据到后台jsp页面及页面跳转问题
2017/01/19 Javascript
深入理解Javascript中的作用域链和闭包
2017/04/25 Javascript
JS数组交集、并集、差集的示例代码
2017/08/23 Javascript
使用vue根据状态添加列表数据和删除列表数据的实例
2018/09/29 Javascript
使用zrender.js绘制体温单效果
2019/10/31 Javascript
vue中移动端调取本地的复制的文本方式
2020/07/18 Javascript
[01:00:59]VP VS VG Supermajor小组赛胜者组第二轮 BO3第二场 6.2
2018/06/03 DOTA
[01:01:35]Optic vs paiN 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python中threading模块join函数用法实例分析
2015/06/04 Python
python模块导入的细节详解
2018/12/10 Python
python调用动态链接库的基本过程详解
2019/06/19 Python
Python Numpy,mask图像的生成详解
2020/02/19 Python
pandas 像SQL一样使用WHERE IN查询条件说明
2020/06/05 Python
Python中如何添加自定义模块
2020/06/09 Python
Python打印不合法的文件名
2020/07/31 Python
Python实现AES加密,解密的两种方法
2020/10/03 Python
SISLEY希思黎官方旗舰店:享誉全球的奢华植物美容品牌
2018/04/25 全球购物
顶岗实习计划书
2014/01/10 职场文书
新闻学专业大学生职业生涯规划范文
2014/03/02 职场文书
小学四年级学生评语
2014/12/26 职场文书
同步小康驻村工作简报
2015/07/20 职场文书
《刷子李》教学反思
2016/02/20 职场文书