Array
(
[car] => Array
(
[red] => 0.333
[orange] => 0.333
[blue] => 0.333
)
[truck] => Array
(
[white] => 0.333
[green] => 0.333
[blue] => 0.333
)
)
我一直在使用序列化數組保存到一個文本文件,並反序列化拿回陣列形式的PHP的陣列結構。不幸的是,序列化數組變得非常大,但主要是由於序列化時的浮點(錯誤或設計)轉換。例如,序列化進程將0.333轉換爲.3333333333333333333333333333333333333333333333333。這讓我想切換到json_encode來保存數組。當比較序列化到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,但仍然比8MB的json_encode文件大得多。
當你解碼json_encoded數據時,你得到了什麼_do_? – 2013-08-24 01:07:20
這裏[phpFiddle](http://phpfiddle.org/main/code/eit-4nm)成功編碼並解碼爲數組格式。 – 2013-08-24 01:15:49
感謝Mike W,你的回答幫助我發現json_decode不適用於大文件。我能夠json_decode的最大的json文件只有大約.5-.6MB。 – Jamex