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
Zend的MVC机制使用分析(二)
May 02 PHP
深入分析使用mysql_fetch_object()以对象的形式返回查询结果
Jun 05 PHP
10 个经典PHP函数
Oct 17 PHP
dedecms函数分享之获取某一栏目所有子栏目
May 19 PHP
php实现的树形结构数据存取类实例
Nov 29 PHP
php实现读取手机客户端浏览器的类
Jan 09 PHP
PHP中的类型约束介绍
May 11 PHP
php实现比较两个文件夹异同的方法
Jun 18 PHP
zen cart实现订单中增加paypal中预留电话的方法
Jul 12 PHP
PHP防止图片盗用(盗链)的方法小结
Nov 11 PHP
完美解决在ThinkPHP控制器中命名空间的问题
May 05 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
phpmyadmin操作流程
2006/10/09 PHP
php中的一些数组排序方法分享
2012/07/20 PHP
php创建基本身份认证站点的方法详解
2013/06/08 PHP
解析wamp5下虚拟机配置文档
2013/06/27 PHP
10个简化PHP开发的工具
2014/12/25 PHP
php从完整文件路径中分离文件目录和文件名的方法
2015/03/13 PHP
php数组冒泡排序算法实例
2016/05/06 PHP
Zend Framework入门教程之Zend_View组件用法示例
2016/12/09 PHP
java解析json方法总结
2019/05/16 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
Javascript常用字符串判断函数代码分享
2014/12/08 Javascript
nodejs通过phantomjs实现下载网页
2015/05/04 NodeJs
web前端开发JQuery常用实例代码片段(50个)
2015/08/28 Javascript
javascript中sort() 方法使用详解
2015/08/30 Javascript
详解JavaScript中的构造器Constructor模式
2016/01/14 Javascript
JS控制伪元素的方法汇总
2016/04/06 Javascript
原生js实现返回顶部缓冲效果
2017/01/18 Javascript
JavaScript 栈的详解及实例代码
2017/01/22 Javascript
浅谈angular2的http请求返回结果的subcribe注意事项
2017/03/01 Javascript
Node.js 使用request模块下载文件的实例
2018/09/05 Javascript
[01:06] DOTA2英雄背景故事第三期之秩序法则光之守卫
2020/07/07 DOTA
Python time模块详解(常用函数实例讲解,非常好)
2014/04/24 Python
pygame实现雷电游戏雏形开发
2018/11/20 Python
Python学习笔记之图片人脸检测识别实例教程
2019/03/06 Python
Djang的model创建的字段和参数详解
2019/07/27 Python
Python爬取智联招聘数据分析师岗位相关信息的方法
2019/08/13 Python
Python可变对象与不可变对象原理解析
2020/02/25 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
2020/10/12 Python
Django数据库迁移常见使用方法
2020/11/12 Python
浅谈盘点5种基于Python生成的个性化语音方法
2021/02/05 Python
Html5跳转到APP指定页面的实现
2020/01/14 HTML / CSS
Coggles美国/加拿大:高级国际时装零售商
2018/10/23 全球购物
乌克兰在线电子产品商店:MTA
2019/11/14 全球购物
linux面试题参考答案(11)
2012/05/01 面试题
高二语文教学反思
2016/02/16 职场文书
vue中利用mqtt服务端实现即时通讯的步骤记录
2021/07/01 Vue.js