シーケンス番号のN番目の桁を返す関数を作成しました。例:
1234567891011121314151617
- 5桁目は5です
- 20桁目は1
私の機能はこんな感じです
<?php
function getLength($number) {
$length = 0;
if ($number == 0){
$length = 1;
} else {
$length = (int) log10($number)+1;
}
return $length;
}
?>
<?php
function getDigitNumber($digit){
$number = 10000000000;
$data = array();
for($i=1;$i<=$number;$i++){
if(getLength($i) > 1){
$array = str_split($i,1);
for($n=0;$n<=count($array)-1;$n++){
array_push($data,$array[$n]);
}
}else{
$data[$i] = $i;
}
}
return $data[$digit];
}
?>
実行すると、このエラーメッセージ「致命的なエラー:許可されたメモリサイズ134217728バイトが使い果たされました(36バイトを割り当てようとしました)」のような問題が発生しました。たぶん私はvarに大きな数を割り当てたからです$number
どうすればそれを修正できますか..またはこれらの多数を処理できる関数を作成するにはどうすればよいですか?
ありがとう..