php实现a到z及其中的”奇怪现象”

版本一:
for($i=ord('a'); $i<ord('z'); $i++) {
    echo chr($i);
}

版本二(与第一版类似使用ascii):
for($i=0; $i<26; $i++) {
    echo chr($i+97);
}
版本三:
echo implode('', range('a', 'z'));
版本四(高智商坑爹版):
for($i='a'; $i!='aa'; $i++) {
    echo $i;
}
版本五:
for($i='a'; strlen($i)<2; $i++) {
    echo $i;
}
前两个循环很容易理解,a到z每个字母的ascii码值是递增不变的,所以这两个方法就是通过ascii值去做循环计算,用到了php内置的ord()和chr()函数。
第三个方法使用php内置的range()函数生成一个从a到z递增的数组,步长为1,之后用implode函数将数组合并成字符串。
后两个方法就是本篇标题中所要讲的”奇怪现象”。
从理论上来讲,咱们用for($i=’a'; $i<'z';$i++)的写法也很正确,合情合理。。。但现实是残酷的,试一下就会发现得到的并不是想要结果。前面a到z是出来了,后面又输出一长串字符。
如果在for循环中每次输出一个换行再观察的话就会发现一个规则,a-z, 下一次输出了aa、ab、ac...az,然后是ba、bb、bc...bz.... 也就是php在给z加一后自动“进位”了。php一个奇特的26进制。当"当前位"的z加1后会向它前面的一位上增加1,然后当前位变为a。'z'++ => ‘aa’,’az’=>’ba’,’zz’=>’aaa’….
注意的两点:1.这种规律不能用于判断。如’z'<‘aa’是false。php中字符串比较时只会由左至右依次比较。2.目前只发现在”前自加”或”前自减”时会出现此种规律,参与其它算术运算时php将纯字符串强转为0。

时间: 2024-09-21 10:44:02

php实现a到z及其中的”奇怪现象”的相关文章

详解z/OS中的浮点数:HFP, BFP与DFP

在z/OS操作系统中,浮点数类型分为二进制浮点数架构BFP,十六进制浮点数架构HFP与十进制浮点数架构DFP三类.IBM自1964年S/360系统起确立HFP为其基础浮点数架构:1998年于S/390系统正式引入BFP,即IEEE754-1985标准:至2007年z9系统中开始支持DFP,即IEEE754-2008标准.本文介绍此三类浮点数的编码原理与性质,帮助读者在z/OS中编写应用程序中选择适合的浮点数类型,以及在调试中阅读二进制编码的浮点数. 浮点数架构的基本知识 在计算机系统中,浮点数是

复选框按钮在IE浏览器中出现重叠现象

问题描述 复选框按钮在IE浏览器中出现重叠现象 IE浏览器的复选框按钮出现了样式的重叠,怎么解决 解决方案 按F12,查看一下样式哪里出了问题: 解决方案二: 标签那栏高度太高,把下面的背景图片一起显示出来了吧..用的什么插件也不说 解决方案三: 如果是兼容性的问题,建议升级到最新的浏览器看看,IE速度比较慢,还是Google的浏览器比较好

sql 存储过程执行过程中的奇怪问题

问题描述 sql 存储过程执行过程中的奇怪问题 某个存储过程,大概如下 b=0,c=0,d=0 如果 a=1 执行下面的 b=b+2;c=c+3;d=d+4 否则 b=b-2;c=c-3;d=d-4 当第一次赋值a=1的时候,存储过程只执行了 b=b+2;d=d+4:而c=c+3;这个语句无执行,所以这个时候c还是0 接着执行a!=0的时候,存储过程执行 b=b-2;c=c-3;d=d-4.所以这个时候c=-3 再执行a=1,存储过程执行 b=b+2;c=c+3;d=d+4.所以这个时候c=0

JQurey入门——事件机制之事件中的冒泡现象示例解释_jquery

1.当用户浏览页面时,浏览器会对页面代码进行解释或编译--这个过程实质上是通过事件来驱动的,即页面在加载时,执行一个Load事件,在这个事件中实现浏览器编译页面代码的过程.事件被触发后被分为两个阶段,一个是捕获(Capture),另一个是冒泡(Bubbing),但大多浏览器并不是都支持捕获阶段,因此事件被触发后,往往执行冒泡过程. 2.示例代码: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN

DB2 for z/OS中LOB(Large Object)对象使用介绍

match为了存储一些复杂的文件.图像和视频,DB2 for OS/390 Version 6 引入了LOB(Large Object)技术,用于支持小于2G的单个LOB对象,同时允许单一LOB列共存储65536 TB的数据.DB2支持以下三种类型的LOB对象: BLOB(BInary Large Object):二进制的LOB对象,用于存储图像.声音以及视频: CLOB(Character Large Object): 字符LOB对象,用于存储字符数据: DBCLOB(Double Byte

利用WebSphere Application Server for z/OS中面向目标的工作负载管理

除了在 IBM System z 平台之上提供一流的 J2EE 应用程序运行时以外,IBM WebSphere Application Server for z/OS 还经过了优化,以利用作为当今企业 SOA 环境中的核心引擎的 System z 的独特技术优势.WebSphere Application Server for z/OS 的最重要独特功能之一是面向目标的工作负载管理功能. 引言 运行在 z/OS 上的 J2EE 服务器由多个地址空间或进程实现.存在一个控制区域.至少一个服务区域,

CSS的BUG:IE6中一个奇怪的现象!

css 先声明,是偶的同事xpoint遇到的,不是偶首发的.不说这句话偶肯定挨揍...当ID与Class组合使用的时候在IE6下无法正常显示. CSS代码: #f{ font-size:20px} #f.a{color: red;} #f.b{color: black; font-size:50px} #f.c{color: blue;} #f.d{color: orange;} HTML代码: <div id="f" class="a">a</d

DIV CSS网页技巧:网页布局中border断线现象

css|技巧|网页 如果容器内有两个浮动,并用CLEAR清除浮动.在ie下拖动滚动条时最外层的border会消失,如果给最外层加上宽度或者高度就不会出现.这是一个奇怪的现象,目前还不能解释是什么原因所导致的.看下面的示例: <div style="margin:500px 100px 10px 100px;padding:50px;border:1px solid #ccc;line-height:300%"> <div style="float:left&

Asp.net开发中的诡异现象

在调试程序时,我们检查代码的过程通常会跳过那些自己认为绝对不可能出错的代码或逻辑.然而有时候,当检查了一遍又一遍却找不到任何出错的可能性,而程序却的的确确不是按我们所设想的那样在运行.这时,很多人就认为自己遇到了灵异事件.这种体验几乎每个程序员都有过,但最终往往事实证明,是我们自己错了,错在不应该太坚信自己的常识. 诡异现象一: 1bool AllowDisplay = CheckPower(); 2p.Visible = AllowDisplay; 3if (p.Visible) { 4 //