PHP输出A到Z及相关
先看以下一段PHP的代码,想下输出结果是什么。
<?php for($i='A'; $i<='Z'; $i++)
{
echo $i . '<br>';
} ?>
输出的不是
A
B
C
...
Z
而是:
A
B
C
...
Z
AA
AB
...
AZ
...
YZ
可能预想的结果不太一样,为什么会有这样的结果的。这个问题可以在PHP手册中找到相关答案,PHP在“递增/递减运算符”一节有过描述:
PHP follows Perl's convention when dealing with arithmetic operations on character variables and not C's. For example, in PHP and Perl $a = 'Z'; $a++; turns $a into 'AA', while in C a = 'Z'; a++; turns a into '[' (ASCII value of 'Z' is 90, ASCII value of '[' is 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)。
由以上可以想见,$i值为'AA'时, 'AA' < 'Z'符合循环条件,继续执行循环,直到$i 值为 'ZA'时,'ZA'>'Z'。不能达到循环条件,循环终止。所以最后的输出值为'YZ'。当然想要输出’A-Z'可以有很多方法实现。以下列举一些:
1.
<?php
echo implode('<br>', range('A', 'Z'));
?>
2.
<?php
for($i=ord('A'); $i<=ord('Z'); $i++)
{
echo chr($i) . '<br>';
}
?>
3.
<?php
for($i=97; $i<122; $i++)
{
echo chr($i) . '<br>';
}
?>
当然,有时候不仅需要A-Z,还可能确实需要AA,AB,AC...比如要打印EXCEL的表头。

只要把最开始的函数的修改下就好了,比如只打印到'BA'。
<?php
for($i = 'A'; $i != 'BB'; $i++)
{
echo $i . '<br>';
}
?>
或者
<?php
$al = 'A';
while($al != 'BB')
{
echo $al++ . '<br>';
}
?>
当然这两种方法比较讨巧,你要知道字母'A'+1或是'AA'+1,乃至'AAA'+1之后的值是多少,也就是对PHP处理字符变量的算数运算的规则很熟悉。
以上。
相关参考:http://www.dewen.io/q/2454
http://www.zh30.com/php-shi-xian-a-dao-z-ji-qi-zhong-di-qi-guai-xian-xiang.html
PHP输出A到Z及相关的更多相关文章
- c++中while(cin>>str)和ctrl z的相关问题探讨
对于while (cin>>str)和ctrl z的问题,网上有以下解释: -------------------------------------------------------- ...
- z pre-pass 相关问题的讨论
z pre-pass 是指在渲染流程中,第一个pass先画一张深度buffer出来,得到需要绘制的最前面这层深度,用这个在接下来的pass中做深度剔出,这样在第二个pass中会省略很多绘制. 这项技术 ...
- [z]kafka相关资料
http://my.oschina.net/ielts0909/blog/93190 http://www.iteye.com/magazines/107 http://blog.csdn.net/h ...
- linux学习:归档,备份及进程相关命令用法整理
指令:tar.zip.gzip.unzip.rsync.scp.ps.kill.nohup 压缩 tar 归档命令,不具备压缩功能 tar -zcvf test.tar.gz test/ # ...
- Zookeeper相关知识
一.Zookeeper是什么? Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务. ...
- C++学习45 流成员函数put输出单个字符 cin输入流详解 get()函数读入一个字符
在程序中一般用cout和插入运算符“<<”实现输出,cout流在内存中有相应的缓冲区.有时用户还有特殊的输出要求,例如只输出一个字符.ostream类除了提供上面介绍过的用于格式控制的成员 ...
- Jsoup代码解读之三-Document的输出
Jsoup代码解读之三-Document的输出 Jsoup官方说明里,一个重要的功能就是output tidy HTML.这里我们看看Jsoup是如何输出HTML的. HTML相关知识 分析代码前 ...
- Jsoup代码解读之二-DOM相关对象
Jsoup代码解读之二-DOM相关对象 之前在文章中说到,Jsoup使用了一套自己的DOM对象体系,和Java XML API互不兼容.这样做的好处是从XML的API里解脱出来,使得代码精炼了很多 ...
- 操作PDF文档功能的相关开源项目探索——iTextSharp 和PDFBox
原文 操作PDF文档功能的相关开源项目探索——iTextSharp 和PDFBox 很久没自己写写心得日志与大家分享了,一方面是自己有点忙,一方面是自己有点懒,没有及时总结.因为实践是经验的来源,总结 ...
随机推荐
- Shell之文本排序命令
目录 Shell之文本排序命令 参考 wc命令 sort命令 uniq命令 Shell之文本排序命令
- Vim升华之树形目录插件NERDTree安装图解(ubuntu)
此文经验证:为真 http://www.linuxidc.com/Linux/2013-06/86048.htm
- Mysql Hash索引和B-Tree索引区别(Comparison of B-Tree and Hash Indexes)
上篇文章中说道,Mysql中的Btree索引和Hash索引的区别,没做展开描述,今天有空,上Mysql官方文档找到了相关答案,看完之后,针对两者的区别做如下总结: 引用维基百科上的描述,来解释一下这两 ...
- C-01 手写数字识别
目录 手写数字识别应用程序 一.导入模块 二.图像转向量 三.训练并测试模型 四.模型转应用程序 4.1 展示图片 4.2 处理图片 4.3 预测图片 更新.更全的<机器学习>的更新网站, ...
- GUI tkinter (Canvas)绘图篇
from tkinter import * root = Tk()root.title("中国象棋棋盘手绘") can = Canvas(root,width = 400, hei ...
- Be a Winner 当成功者
Winners see opportunities. Losers see. Winners see possibilities. Losers see problems. Winners see t ...
- django html母版
08.12自我总结 django母版 一.母版写的格式 在需要导入的地方写 {% block 名字定义 %} {% endblock %} 二.导入模板 {% extends 'FUCK.html' ...
- 关于Stream的知识分享
一.什么是Stream 查了一下MSDN,他是这么解释的:提供字节序列的一般视图. 这个解释有点太笼统了,下面,我们来仔细的捋一下 1.什么是字节序列? 字节序列指的是:字节对象被存储为连续的字节序列 ...
- MYSQL中HEX、UNHEX函数
HEX()函数:返回十六进制值的字符串表示形式.注意:并不是十进制转化为十六进制数,而是转化为字符串... UNHEX() 函数: 每对十六进制数字转化为一个字符. 下面是HEX()几个简单的例子: ...
- jquery的返回顶端的功能实现
页面很长的时候,读到最下面,需要返回顶端,则在页面最下面布局一个返回顶部的图标很有用. 具体功能是,jquey控制,向下滚动出现返回顶部图片,若滚动返回顶部或点回顶部,则图标消失. 实现效果如下图: