Для моего варианта использования это было быстрое и эффективное решение. Просто отметьте, что это означает, что когда вы декодируете его обратно из JSON, это будет строка, поскольку она будет заключена в двойные кавычки.
е вопрос, это скорее знать. Я обновил приложение, которое используетjson_encode()
до PHP7.1.1, и я видел проблему с изменением числа с плавающей запятой, иногда расширяя 17 цифр. Согласно документации, PHP 7.1.x начал использоватьserialize_precision
вместо точности при кодировании двойных значений. Я предполагаю, что это вызвало пример значения
472,185
становиться
+472,18500000000006
после того, как это значение прошлоjson_encode()
, После моего открытия я вернулся к PHP 7.0.16, и у меня больше нет проблем сjson_encode()
, Я также пытался обновить до PHP 7.1.2, прежде чем вернуться к PHP 7.0.16.
Обоснование этого вопроса вытекает изPHP - точность с плавающей точкойОднако, в конце концов, причина этого заключается в переходе от точности к использованию serialize_precision вjson_encode()
.
Если кто-нибудь знает решение этой проблемы, я был бы более чем рад выслушать обоснование / исправление.
Выдержка из многомерного массива (до):
[staticYaxisInfo] => Array
(
[17] => stdClass Object
(
[variable_id] => 17
[static] => 1
[min] => 0
[max] => 472.185
[locked_static] => 1
)
)
и после прохожденияjson_encode()
...
"staticYaxisInfo":
{
"17":
{
"variable_id": "17",
"static": "1",
"min": 0,
"max": 472.18500000000006,
"locked_static": "1"
}
},