2017-02-21 5 views
1

는 내가 PHP 변수 또는 배열에 값을 저장해야저장 BIGINT는

내 번호의 모든 8 제로에 쉼표를 추가하는 함수를 썼다 있지만 "1.0E + 30"

로 저장 있어요

여기 내 PHP 코드 :

function SplitHex($number) { 
$number_split = str_split($number,1); 
$number_split_revers = array_reverse($number_split); 
$i = 0; 
foreach ($number_split_revers as $key => $value) { 
    if ($value == 0) { 
     $i++; 
     if ($i == 8) { 
     $number_split_revers[$key] = str_replace(0,",0",$value); 
     $i=0; 
     } 
    } 

} 
    $final = ''; 
    $number_final = array_reverse($number_split_revers); 
    foreach ($number_final as $value) { 
     $final .= $value; 
    } 

//$final = strval(implode("",$number_final)); 

return $final; 

와 나는 함수를 호출 :의

$test[2] = SplitHex(1000000000000000000000000000000); 
var_dump ($test); 
print_r ($test); 

출력을

1.0E+30 

하지만 내가 많이 검색 1000000,00000000,00000000,00000000

해야하지만이 문제 참고

+0

이 페이지를 참조하십시오. http://stackoverflow.com/questions/8647125/using-long-int-in-php – hassan

+0

http://stackoverflow.com/questions/4427020/is-there를 참조하십시오. -a-biginteger-class-in-php – Nerea

답변

1

에 적합한 솔루션,

는 IF를 찾을 수 없습니다 :print_rvar_dump은 모두 동일합니다 너무 길면 PHP에서 32 정수 형식에 맞지 않으므로 float에 저장합니다.

PHP_INT_MAX 크기를 초과하면 정수 값을 볼 수 없습니다.

그러나 문제는이에 대한 대안입니다,

$test[2] = number_format(SplitHex(1000000000000000000000000000000),0,null,''); 
var_dump ($test); 
print_r ($test); 

그것을 시도 줄, 그것을 작동합니다.

+0

작동하지 않습니다. 출력은'1000000000000000009884624838656'이지만'1000000000000000000000000000000'이어야합니다 – user3325376