php - json_decode($var) 和 (object)json_decode($var, true) 的区别

标签 php json joomla virtuemart

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/

相关文章:

mysql - PHPmyadmin 和 Joomla 与图像字段

javascript - :Active links using javascript

javascript - 从用户个人资料页面只需为用户提取一个 JSON 字符串并使用 jQuery 显示

ruby-on-rails - 如何在大型 JSON 数组中搜索并通过多个键查找记录

java - 类型中的方法 (List<String>) 不适用于参数( boolean 值)

CSS 样式在悬停时选择与其他菜单项不同的事件菜单项

php - 使用相同的 php 邮件程序脚本的多个表单

php - 将多个文件插入/上传到 PHP MYSQL 数据库表中的特定行

php - PHP Yii 框架可以连接到 parse.com 吗?

php - 如何在joomla中实现分页?