2017-02-21 40 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); 

的输出print_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中,所以它存储在浮动。

因此,如果超过PHP_INT_MAX大小,则无法看到该整数值。

但是,这是该替代,

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

给它一个尝试,它应该工作。

+0

它不工作,输出是'1000000000000000019884624838656',但它应该是'1000000,00000000,00000000,00000000' – user3325376