相关疑难解决方法(0)

在PHP中将大整数转换为完整字符串

我一直在寻找一段时间,但我能找到的不是我寻找的东西.我需要将一个可能非常大的整数值转换为字符串.听起来很简单:"$var"?不,因为这可以导致E+数字的表示.

<?php

$var = 10000000000000000000000000;
echo $var."\n";
echo "'$var'\n";
echo (string) $var."\n";
echo strval($var);

?>
Run Code Online (Sandbox Code Playgroud)

1.0E+25
'1.0E+25'
1.0E+25
1.0E+25
Run Code Online (Sandbox Code Playgroud)

我怎样才能改变输出10000000000000000000000000

php integer casting type-conversion

7
推荐指数
2
解决办法
1万
查看次数

json_decode和json_encode长整数而不丢失数据

如PHP文档中所述,当json_decode包含长整数的数据结构时,它们将被转换为浮点数.解决方法是使用JSON_BIGINT_AS_STRING,它将它们保留为字符串.当json_encode输入这些值时,JSON_NUMERIC_CHECK会将这些数字编码回大整数:

$json  = '{"foo":283675428357628352}';
$obj   = json_decode($json, false, JSON_BIGINT_AS_STRING);
$json2 = json_encode($obj, JSON_NUMERIC_CHECK);
var_dump($json === $json2); // true
Run Code Online (Sandbox Code Playgroud)

使用此方法进行正确的数据往返很容易出错.如果属性包含'123'一个应该保留字符串的数字字符串,它将被编码为整数.

我想从服务器获取一个对象,修改一个属性,然后将整个数据结构放回去.我需要保留原始类型.我不想维护我正在操纵的属性.

这有什么真正的解决方法吗?PHP不再存在大的问题,但json_decode例程似乎已经过时了.

php parsing json numbers bigint

6
推荐指数
1
解决办法
3703
查看次数

标签 统计

php ×2

bigint ×1

casting ×1

integer ×1

json ×1

numbers ×1

parsing ×1

type-conversion ×1