json_decode($var) 和 (object)json_decode($var, true) 有区别吗?
当最近在 Joomla virutemart 中处理某段代码时,我遇到了一个困惑的情况。 Virtumart 对其 cartObject 使用 (object)json_decode($var, true),如果我将其更改为简单的 json_decode($var),它之后会显示一些错误。在进一步调试时,我发现购物车结构为:
stdClass Object
(
[cartProductsData] => Array
(
)
[vendorId] => 0
[automaticSelectedShipment] =>
[automaticSelectedPayment] =>
[order_number] =>
[BT] => Array
(
)
[ST] => Array
(
)
)
虽然改变了代码,即 json_decode($var),结果是:
stdClass Object
(
[cartProductsData] => Array
(
)
[vendorId] => 0
[automaticSelectedShipment] =>
[automaticSelectedPayment] =>
[order_number] =>
[BT] => stdClass Object
(
)
[ST] => stdClass Object
(
)
)
所以 BT 和 ST 现在是对象,而不是像以前那样是数组,但是如何呢?任何解释将不胜感激。
最佳答案
这是因为,json_decode() 的返回类型
在 json_decode($var) 中,它将整个 json 数据作为对象返回,包括内部组件。 (所有级别)
但是,json_decode($var, true) 以数组结构返回整个 json 数据,包括内部组件。 (所有级别)
因此,当使用 (object)json_decode($var, true) 时,json_data 将数据作为数组返回,并且只有最外层或主数组(第一级)被转换为对象。
关于php - json_decode($var) 和 (object)json_decode($var, true) 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38524451/