2017-02-21 10 views
1

Я написал функцию, чтобы добавить запятую в каждый 8 нуль моего номерамагазин BIGINT в переменном PHP

мне нужно сохранить значение в переменной PHP или массив, но она сохраняется как «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); 

выход echoprint_rvar_dump все же:

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

FYI,

если если он слишком длинный, он не может вписаться в 32 целочисленный формат в php, поэтому он хранит его в float.

Значит, вы не можете увидеть это целочисленное значение, если оно превышает размер PHP_INT_MAX.

Но это альтернатива для этого,

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

Дайте ему попробовать, он должен работать.

+0

он не работает, выход «1000000000000000019884624838656», но он должен быть «1000000,00000000,00000000,00000000» – user3325376