【问题标题】:I can't convert object to an array我无法将对象转换为数组
【发布时间】:2020-02-10 10:14:42
【问题描述】:

我正在尝试创建一个购物车 API 路由,但我遇到了这个问题,因为当我使用这个语句 $carts = \Cart::session($session)->getContent(); 时,我得到一个像这样的对象:

"cart": {
    "1": {
        "id": 1,
        "name": "Tort cu biscuiți",
        "price": 20,
        "quantity": "1",
        "attributes": {
            "image_path": "http://127.0.0.1:8000/storage/images/AkiGKJdxjKNtyoVI034RPL1drLsMntUxLfzqZplV.jpeg"
        },
        "conditions": []
    },
    "2": {
        "id": 2,
        "name": "Tort cu biscuiți",
        "price": 20,
        "quantity": 2,
        "attributes": {
            "image_path": "http://127.0.0.1:8000/storage/images/IkAhenLttHWaRD58hNZ460ykWCq7q1sih3vI9H5V.jpeg"
        },
        "conditions": []
    }
}

我想将其转换为对象数组。我尝试了$cart->toArray(); 并没有工作,我也绑定了(数组)$cart,我得到了这个:

"cart": {
    "\u0000*\u0000items": {
        "1": {
            "id": 1,
            "name": "Tort cu biscuiți",
            "price": 20,
            "quantity": "1",
            "attributes": {
                "image_path": "http://127.0.0.1:8000/storage/images/AkiGKJdxjKNtyoVI034RPL1drLsMntUxLfzqZplV.jpeg"
            },
            "conditions": []
        },
        "2": {
            "id": 2,
            "name": "Tort cu biscuiți",
            "price": 20,
            "quantity": 2,
            "attributes": {
                "image_path": "http://127.0.0.1:8000/storage/images/IkAhenLttHWaRD58hNZ460ykWCq7q1sih3vI9H5V.jpeg"
            },
            "conditions": []
        }
    }
}

我可以知道是什么问题吗?

【问题讨论】:

  • 此购物车是您自己的自定义对象吗?您是否不必创建行为来告诉它如何成为一个数组?
  • 我使用这个包 darryldecode/cart:~4.0 来创建购物车

标签: arrays laravel object shopping-cart


【解决方案1】:

你可以像这样手动操作:

$carts = \Cart::session($session)->getContent();

if ($carts) {
    $cartsArray = json_decode($carts);
    foreach($cartsArray->cart as &$cart){
        $cart = (array) $cart;
    }
}

dd($cartsArray);

【讨论】:

  • 它抛出了这个错误Symfony\Component\Debug\Exception\FatalThrowableError: Cannot use object of type stdClass as array
  • foreach($cartsArray['cart'] as &$cart)
  • 好吧。告诉我这段代码的返回值是什么:echo get_class($cartsArray);
  • 它返回stdClass
  • 嗯,好吧,然后我对我的回复进行了更改。你能再试一次吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-24
  • 1970-01-01
  • 1970-01-01
  • 2021-05-03
  • 2018-12-04
  • 2021-06-16
相关资源
最近更新 更多