zoukankan      html  css  js  c++  java
  • 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

      

  • 相关阅读:
    ios开发,NSFileManager的使用
    iOS开发-常用第三方开源框架介绍(绝对够你用了)
    iOS开发常用第三方开源框架
    对佛学和个人发展的思考总结(十八)心流、非人情网络、穷人、人生机会、平衡计分卡
    php 判断字符串中包含重复相同的次数 array_count_values str_split max 函数组合使用
    存储过程一次性返回多个数据集,逻辑层与前端处理
    动态改变div背景颜色
    在asp.net mvc应用中使用vue.js
    angularjs单一页面中高频访问相同web api,出现阻塞和等待
    Windows安装配置OpenGrok
  • 原文地址:https://www.cnblogs.com/chenxl/p/4404481.html
Copyright © 2011-2022 走看看