2012-10-10 108 views
-1

在PHP中,做一個for循環。循環產生'A0'到'Z9'

你能從A0Z9循環......我知道一個簡單的for循環就好

for ($i = 0; $i <= 9; $i += 1) { 
// do things 
} 

但是,如何將它的字母被添加?

+1

有A0'之間'沒有明確的序列和'Z9'。 – netcoder

+0

爲什麼我的問題得到三個降價?我沒有包括什麼,或者這只是一個愚蠢的問題? :( – nn2

+0

weka,它聽起來像你不知道如何做嵌套循環或者如果你希望有一個變量的值爲「A0」,並以某種方式增加它,直到它變成「Z9」。你只是要求迭代字母表,或者如何從字母表中得到一個字母的數字?我想它會更好。PS:我沒有投票。(我確實考慮過推薦項目euler,在事實上,我推薦它)。有一個upvote;) – Theraot

回答

3

您可以使用chr

for ($letter = ord('a'); $letter <= ord('z'); ++$letter) { 
    for ($number = 0; $number <= 9; ++$number) { 
     echo chr($letter) . $number; 
    } 
} 
+0

謝謝,這就是我一直在尋找。 – nn2

+0

雙循環不是必需的,PHP理解如何像'A0'那樣增加事物。 –

+0

@傑克什麼是最好的條件?例如'for($ i ='A0'; $ i <='Z9'; ++ $ i)'不會產生所需的結果。 – nathan

1

我認爲你需要將字符映射到一個數組,通過數組的循環,使用的foreach

的答案:

<?php 
    for ($i = "A00"; $i <= "Z99"; $i++){  
     print $i; 
     print "<br>"; 
    }  
?> 

將打印A00到Z99,這是非常好的。

+0

+1 Nice find :) –

+0

雖然它打印太多的結果:) –

1
for ($i = "A"; $i <= "Z"; $i++) { 
     print $i; 
    } 

打印A-Z。

如果你真的想這樣做,你可能必須引入一個介於0-9之間的內部循環。

for ($i="A"; $i<"Z"; $i++) { 
    for ($j=0; $j <=9; $j++) { 
    print $i.$j; 

    } 

} 
+0

不。將'A'打印到'Y'。 – netcoder

+0

@netcoder:謝謝!糾正。 – janenz00

2

這裏有另一種方式來做到這一點,這一個允許你改變字母順序或添加其他符號。

$alphabet = str_split('ABCDEFGHIJKLMNOPQRSTUVWXYZ', 1); 
for ($index = 0; $index <= 9; $index += 1) 
{ 
    for ($letter = 0; $letter <= count($alphabet) - 1; $letter++) 
    { 
     // do things 
     echo $alphabet[$letter].$index; 
    } 
} 

爲什麼你可能想要改變符號的一個例子是你想要另一種語言的字母表。說......西班牙語?

$alphabet = str_split('ABCDEFGHIJKLMNÑOPQRSTUVWXYZ', 1); 

不要忘記你的編碼;)

1

結合從不確定的答案,janenz00你可以這樣做:

for ($i = "A"; $i < "Z"; $i++) { 
    for($j = 0; $j < 10; $j++) { 
    // Do things like echo $i . $j 
    } 
} 

當然,如果你想通過A0循環來這工作A9,然後B0B9,一直到Z0Z9

2

你可以採取的ASCII(97-122)範圍()函數和CHR()函數的優點,避免創建字符數組,例如:

$range = range(97, 122); # A to Z ascii chars 

# loop 9 times 
for ($i=1; $i <= 9; $i++) { 
    printf("=========== loop %s\n", $i); 
    foreach($range as $n) { 
     print chr($n); 
     print "\n";  
    }  
}