为什么PHP函数"json_decode"返回一个对象?

Coo*_*mie 1 php arrays json object

PHP函数json_decode(默认情况下)返回一个对象.切换第二个参数将返回一个数组.

也许我只是不理解对象,但我认为对象有属性和方法(也许是事件).数组只有属性.

鉴于json_decode只返回属性而从不返回方法,它不应该总是返回一个数组吗?

Spu*_*ley 8

它返回一个对象,因为JSON定义了一个对象结构.这就是'JS O N'中'O'所代表的含义.

这就是语言之间的差异开始变得更加明显的地方.

Javascript使用PHP可能使用带有命名键的数组的对象.JS不能在数组中使用命名键,只能在对象中使用.其他语言对于如何构造变量有其他限制.

使用对象意味着PHP与JSON的其他语言实现尽可能一致.由于JSON是为跨语言通信而设计的,因此保持一致非常重要.

但正如你所说,在PHP中,有时使用数组更容易,因此PHP提供了将其直接转换为数组的选项.

但要知道,PHP数组是一样的JSON数组和对象.PHP允许您混合命名和编号的数组键.这不能很好地映射到JSON,所以如果你使用PHP数组来使用JSON,你必须要小心它.如果您正在使用PHP对象进行JSON工作,那么您将不会在功能上出现这种不匹配.