私はそれを26
なぜ私のPHPコードは無限ループですか?
aa
を与えるとき、私はそれを2
z
を与えるとき、私はそれを1
b
を与えるとき
a
を返す関数GetLetters
を持っています私はそれを28
を与えるとき、基本的にあなたのアイデアを取得したい私は26を超える任意の入力値を供給するとき、それは無限にループしているが、これは私の解決策であることに27
ab
を与えるとき、ありません誰もそれが間違っていることを知っている?
function GetLetter($amt){
if($amt<=26){
return strtolower(chr(64+$amt));
}
$letters=array();
while(true){
$quotient=$amt%26;
array_unshift($letters,GetLetter($quotient===0?26:$quotient));
$amt=floor(($amt-1)/26);
if($amt===0){
break;
}
}
return implode("",$letters);
}
代わりに 'while($ amt!= 0){...}'と言うこともできます。これはint-to-float比較の問題も解決します。 –
@Marcは、私は 'しばらく(真)'パターンを好きですが、他の人はもちろん – Pacerier
の同意も '後でコードを読むときに、後で特定の条件でブレークの(真の)'としながら、明確ではありません。 'while(true)... break'は、特別な場合にのみ使用してください。これは明らかにそうではありません。 – CodeCaster