我有一个php数组结构
Array
(
[car] => Array
(
[red] => 0.333
[orange] => 0.333
[blue] => 0.333
)
[truck] => Array
(
[white] => 0.333
[green] => 0.333
[blue] => 0.333
)
)
我一直在使用序列化将数组保存到文本文件,并反序列化以取回数组形式。不幸的是,序列化的数组变得非常大,但主要是由于序列化时的浮点(错误或设计)转换。例如,序列化过程不是 0.333,而是将 .333 转换为 .3333333333333333333333333333333333333333333333333。这让我想切换到 json_encode 来保存数组。将 serialize 与 json_encode 进行比较时,序列化文件的大小为 40MB,而 json_encode 的大小为 8MB。
太好了,除非我尝试对文件进行 json_decode ,否则它不再是数组形式。我尝试了 json_decode($array, true),但这也不起作用。
知道如何让 json_encode 为这个例子工作吗?
TIA
PS,我的浮点数是通过四舍五入生成的。我在 StackO 上找到的另一个答案建议不要使用round($part/$sum, 3);
, 使用sprintf('%.3f', $part/$sum);
它将浮点数转换为字符串。仅此一项就将序列化文件从 40MB 减少到 19MB,但它仍然比 json_encode 文件大小 8MB 大得多。