私は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 を .333333333333333333333333333333333333333333333 に変換します。これにより、json_encode に切り替えて配列を保存したくなりました。シリアル化を json_encode と比較すると、シリアル化されたファイルのサイズは 40MB で、json_encode のサイズは 8MB です。
これは素晴らしいことですが、ファイルを json_decode しようとすると、配列形式ではなくなります。json_decode($array, true) を試しましたが、それもうまくいきません。
この例で json_encode を機能させる方法はありますか?
ティア
PS、浮動小数点数は小数点以下を四捨五入して生成されました。私が StackO で見つけた別の回答は、 をround($part/$sum, 3);
使用する代わりにsprintf('%.3f', $part/$sum);
、浮動小数点を文字列に変換したものを使用することを提案しました。それだけで、シリアル化されたファイルは 40MB から 19MB に削減されましたが、それでも json_encode ファイル サイズの 8MB よりもはるかに大きくなっています。