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