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 相关文章推荐
Mysql的GROUP_CONCAT()函数使用方法
Mar 28 PHP
在Windows系统上安装PHP运行环境文字教程
Jul 19 PHP
Zend Studio去除编辑器的语法警告设置方法
Oct 24 PHP
php 模拟post_验证页面的返回状态(实例讲解)
Oct 28 PHP
PHP使用适合阅读的格式显示文件大小的方法
Mar 05 PHP
ThinkPHP 3.2 版本升级了哪些内容
Mar 05 PHP
PHP中的密码加密的解决方案总结
Oct 26 PHP
PHP实现通过CURL上传文件功能示例
May 30 PHP
PHP实现打包zip并下载功能
Jun 12 PHP
php-fpm.conf配置文件中文说明详解及重要参数说明
Oct 10 PHP
Laravel框架集成UEditor编辑器的方法图文与实例详解
Apr 17 PHP
关于laravel后台模板laravel-admin select框的使用详解
Oct 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获取服务器信息的实现代码
2013/02/04 PHP
PHPMailer发送邮件
2016/12/28 PHP
PHP接入支付宝接口失效流程详解
2020/11/10 PHP
jquery中ajax学习笔记4
2011/10/16 Javascript
ASP.NET MVC中EasyUI的datagrid跨域调用实现代码
2012/03/14 Javascript
Javascript实现返回上一页面并刷新的小例子
2013/12/11 Javascript
jQuery is()函数用法3例
2014/05/06 Javascript
jQuery分组选择器用法实例
2014/12/23 Javascript
js仿黑客帝国字母掉落效果代码分享
2020/11/08 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
jquery UI Datepicker时间控件冲突问题解决
2016/12/16 Javascript
用JavaScript实现让浏览器停止载入页面的方法
2017/01/19 Javascript
jquery实现一个全局计时器(商城可用)
2017/06/30 jQuery
vue 封装自定义组件之tabal列表编辑单元格组件实例代码
2017/09/07 Javascript
JavaScript数组基于交换的排序示例【冒泡排序】
2018/07/21 Javascript
axios的拦截请求与响应方法
2018/08/11 Javascript
vue项目打包部署_nginx代理访问方法详解
2018/09/20 Javascript
node爬取新型冠状病毒的疫情实时动态
2020/02/06 Javascript
如何在 Vue 表单中处理图片
2021/01/26 Vue.js
[01:21]辉夜杯战队访谈宣传片—CDEC
2015/12/25 DOTA
[45:18]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第一场
2018/04/04 DOTA
python实现ip查询示例
2014/03/26 Python
python通过zlib实现压缩与解压字符串的方法
2014/11/19 Python
python中kmeans聚类实现代码
2018/02/23 Python
python 使用三引号时容易犯的小错误
2020/10/21 Python
使用HTML5在网页中嵌入音频和视频播放的基本方法
2016/02/22 HTML / CSS
英国网络托管和域名领导者:Web Hosting UK
2017/10/15 全球购物
体育教师个人的自我评价
2014/02/16 职场文书
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
优秀研究生主要事迹
2014/06/03 职场文书
不错的求职信范文
2014/07/20 职场文书
党员自我剖析材料(群众路线)
2014/10/06 职场文书
群众路线学习笔记范文
2014/11/06 职场文书
交通事故协议书范本
2014/11/18 职场文书
贷款工作证明模板
2015/06/12 职场文书
海康机器人重磅发布全新算法开发平台VM4.2
2022/04/21 数码科技