为什么SplFixedArray的json_encode转储对象而不是数组?

问题描述:

我使用json_encode来转储数组,我得到不同的结果,使用array()SplFixedArray。当我使用array()时,它给了我阵列,但是当我使用SplFixedArray时给了我一个对象。是否有一个原因?为什么SplFixedArray的json_encode转储对象而不是数组?

这是当我使用普通阵列()什么是返回:

[{"firstName":"Bo","middleName":"N","lastName":"Higgs"}, 
{"firstName":"Bob","middleName":"D","lastName":"Superstar"}] 

当我使用SplFixedArray它给了我:

{"0":{"firstName":"Bo","middleName":"N","lastName":"Higgs"}, 
"1":{"firstName":"Bob","middleName":"D","lastName":"Superstar"}} 

两个字符串是完全一样的, SplFixedArray只有一点点不同的存储方式,因为它是一个FIXED数组。 simple demo

另请务必阅读说明书。如果你启动SplFixedArray(它是一个类,而不是一个函数),你会得到一个对象作为回报。手册: http://php.net/manual/en/class.splfixedarray.php

+0

这两个字符串是完全不同的,JSON数组不是JSON对象。尝试使用另一种语言解码它,而不是PHP,你就会明白。只有PHP将所有数组视为hashmaps,并且它的唯一真正的数组类型'SplFixedArray' JSON到对象中是非常奇怪的。 – oskarth 2017-10-20 08:23:22