PHP輸出A到Z及相關

  先看如下一段PHP的代碼,想下輸出結果是什麼。php

<?php

for($i='A'; $i<='Z'; $i++)
{
    echo $i . '<br>';
}

?>

  輸出的不是html

  A函數

  Bspa

  Ccode

      ...htm

  Zblog

  而是:rem

  Ait

  Bio

  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

相關文章
相關標籤/搜索