先看以下一段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及相关的更多相关文章

  1. c++中while(cin>>str)和ctrl z的相关问题探讨

    对于while (cin>>str)和ctrl z的问题,网上有以下解释: -------------------------------------------------------- ...

  2. z pre-pass 相关问题的讨论

    z pre-pass 是指在渲染流程中,第一个pass先画一张深度buffer出来,得到需要绘制的最前面这层深度,用这个在接下来的pass中做深度剔出,这样在第二个pass中会省略很多绘制. 这项技术 ...

  3. [z]kafka相关资料

    http://my.oschina.net/ielts0909/blog/93190 http://www.iteye.com/magazines/107 http://blog.csdn.net/h ...

  4. linux学习:归档,备份及进程相关命令用法整理

    指令:tar.zip.gzip.unzip.rsync.scp.ps.kill.nohup 压缩 tar 归档命令,不具备压缩功能 tar -zcvf test.tar.gz  test/     # ...

  5. Zookeeper相关知识

    一.Zookeeper是什么? Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务. ...

  6. C++学习45 流成员函数put输出单个字符 cin输入流详解 get()函数读入一个字符

    在程序中一般用cout和插入运算符“<<”实现输出,cout流在内存中有相应的缓冲区.有时用户还有特殊的输出要求,例如只输出一个字符.ostream类除了提供上面介绍过的用于格式控制的成员 ...

  7. Jsoup代码解读之三-Document的输出

    Jsoup代码解读之三-Document的输出   Jsoup官方说明里,一个重要的功能就是output tidy HTML.这里我们看看Jsoup是如何输出HTML的. HTML相关知识 分析代码前 ...

  8. Jsoup代码解读之二-DOM相关对象

    Jsoup代码解读之二-DOM相关对象   之前在文章中说到,Jsoup使用了一套自己的DOM对象体系,和Java XML API互不兼容.这样做的好处是从XML的API里解脱出来,使得代码精炼了很多 ...

  9. 操作PDF文档功能的相关开源项目探索——iTextSharp 和PDFBox

    原文 操作PDF文档功能的相关开源项目探索——iTextSharp 和PDFBox 很久没自己写写心得日志与大家分享了,一方面是自己有点忙,一方面是自己有点懒,没有及时总结.因为实践是经验的来源,总结 ...

随机推荐

  1. grep、正则表达式

    1.grep :文本搜索工具 -i:忽略大小写--color:匹配到的内容高亮显示-v:显示没有被模式匹配到的行-o:只显示被模式匹配到的字符串-n:显示匹配到行的行号-E:使用扩展正则表达式-A:后 ...

  2. 洛谷:P3950 部落冲突

    原题地址:https://www.luogu.org/problemnew/show/P3950 题目简述 给定一棵树,每次给定一个操作,有如下两种: 将某条边染黑 2.询问给定的u,v两点间是否有边 ...

  3. Openshift 部署第一个应用hello-openshift

    Openshift 部署第一个应用hello-openshift: cd /opt/ wget https://github.com/openshift/origin/releases/downloa ...

  4. 安卓tab,viewPaper以及frament的使用

    安卓TabLayout,ViewPager以及fragment的使用 Demo效果 首先先说一下这个demo的最终效果吧: 项目地址:https://github.com/xiaohuiduan/fr ...

  5. Nginx internal 指令限制访问图片资源文件

    Nginx 的 internal 指令可以用来限制 Web 公共目录下的图片等资源文件被任意用户直接访问.一个明显的使用场景是,对于用户上传的认证图片,属于个人隐私资源,不应该让所有用户都能访问得到, ...

  6. 使用golang插入mysql性能提升经验

    前言 golang可以轻易制造高并发,在某些场景很合适,比如爬虫的时候可以爬的更加高效.但是对应某些场景,如文件读写,数据库访问等IO为瓶颈的场合,就没有什么优势了. 前提基础 1.golang数据库 ...

  7. 无意间做了个 web 版的 JVM 监控端(前后端分离 React+Spring Boot)

    之前写了JConsole.VisualVM 依赖的 JMX 技术,然后放出了一个用纯 JMX 实现的 web 版本的 JConsole 的截图,今天源码来了. 本来就是为了更多的了解 JMX,第一步就 ...

  8. resmgr:cpu quantum等待事件 触发的bug问题

    1>resmgr:cpu quantum等待事件 触发的bug问题  (处理心得) 1.客户反馈数据库服务器在某个时间段总是特别繁忙,获取awr报告分析繁忙原因

  9. Formform

    知识预览 一 Django的form组件 二 Django的model form组件 三 Django的缓存机制 四 Django的信号 五 Django的序列化 回到顶部 一 Django的form ...

  10. Tomcat部署项目的三个方法

    所需软件安装 要想在Tomcat中部署项目前提是先要搭建好Tomcat,搭建Tomcat就离不开以下软件包的安装配置,本次演示使用Linux平台 1.JDK软件包 JDK是一切java应用程序的基础, ...