에 할당 : $ 내가 100000000000000000000
처럼 뭔가 스크립트 나던 실행을 할당하고 오류를 반환하지 않습니다PHP 루프 나던 작품은 내가 같은 PHP 루프가 21 자리 숫자
for($i = $_GET['start']; $i < $_GET['end']; $i++){
echo $i;
}
! 어쨌든 내가 고칠 수 있니?
감사합니다.
에 할당 : $ 내가 100000000000000000000
처럼 뭔가 스크립트 나던 실행을 할당하고 오류를 반환하지 않습니다PHP 루프 나던 작품은 내가 같은 PHP 루프가 21 자리 숫자
for($i = $_GET['start']; $i < $_GET['end']; $i++){
echo $i;
}
! 어쨌든 내가 고칠 수 있니?
감사합니다.
사용중인 값이 너무 커서 처리 할 수 없습니다.
"정수의 크기는 플랫폼에 따라 다르지만 최대 값은 약 20 억입니다." 여기
http://php.net/manual/en/language.types.integer.php
내가 문자열 대신 정수를 사용하여 테스트 솔루션이며, 그것을 작동합니다 : 당신이 당신의 스크립트가 지원해야하는 번호의 범위를 지정해야합니다 모든$start = (string)$_GET['start'];
$end = (string)$_GET['end'];
for($i = $start; strcmp($i, $end); $i = bcadd($i, 1)){
echo $i . "<br>";
}
ok는 PHP가'$ int = 100000000000000000000'과'$ int ++'와 같은 값으로 수학 할 수 없다는 것을 의미합니까? – ahoura
BC Math 함수를 사용하여 for 루프 구현을 수행 할 수 있습니다. http://php.net/manual/en/book.bc.php – OCDev
int에 너무 큽니다. 매뉴얼에서 :'PHP가 정수 타입의 범위를 벗어나는 숫자를 발견하면, 다음과 같이 해석됩니다. 대신에 float. 또한, 정수형의 경계를 넘는 숫자를 생성하는 연산은 대신 float를 반환합니다. '당신은 수레를 반복 할 수 있어야합니다. –
첫째.
그런 다음 올바른 데이터 구조를 찾아 데이터를 처리해야합니다. integer
- 귀하의 경우 가능성이 높습니다 - gmp
numbers.
그러면 코드를 작성할 수 있습니다. for
루프가 발표 된대로 작동하므로 $_GET
에 대해 하드 코드하지 않는 것이 좋습니다.
그래서 $ start = gmp_init ($ _ GET [ 'start']);와 같은 것을 사용하는 것이 좋습니다. $ end = gmp_init ($ _ GET [ 'end']); ($ i = $ start; $ i <$ end; $ i ++) {'? – ahoura
비교 작업과 증가 작업은 gmp 함수를 사용하여 수행해야합니다. ['gmp_add'] (http://www.php.net/manual/en/function.gmp-add.php); ['gmp_cmp'] (http://www.php.net/manual/en/function.gmp-cmp.php). – hakre
먼저 코드에 $_GET['start']
과 $_GET['end']
을 직접 입력하지 마십시오.
대신 변수에 할당하고 숫자 및 범위에 있는지 확인하십시오. 예를 들어
: 끝이 등, 시작보다 작을 수 없습니다 ...
for($i = $start; $i < $end; $i++){
echo $i;
}
둘째, 대형 서버를 중단됩니다있는 번호입니다.
는 왜 작은 루프를 바르도록 시작과 끝 사이의 차이를 사용
<?php
$min = 0;
$max = $_GET['end'] - $_GET['start'];
for($i = $min; $i < $max; $i++){
echo $i + $_GET['start'];
}
시작/끝이 무엇을입니까? 이 숫자가 정말 필요한가요? 이 루프는 오래 걸릴 것입니다. – galchen
저는 그것이 실행될 것이라고 확신합니다. 정수 범람으로 인해 본문이 실행되지 않습니다. – hakre
아니요, 시작은 '100000000000000000000'과 같을 것이고 끝은'100000000000000001000'과 같을 것입니다. 왜 이런 식으로 선택했는지 묻지 마십시오.이 방법이 필요합니다. – ahoura