仅当作为集合迭代时才有非法的字符串偏移量



我知道这方面还有很多其他问题,但我的情况很特殊,我的非法偏移只在我与其他人迭代时发生,但当我自己迭代时也没问题。我正在使用Slimframework。我的数组如下:

{
"cart": {
"cartId": "9c7b7c3e-d4d3-4de1-afa4-f81e63b50906",
"orderNo": 1,
"orderType": "Collection",
"customerName": "",
"customerTel": "",
"address": "",
"items": [
{
"itemId": 2,
"itemName": "Item A",
"itemPrice": 5.75,
"qty": 1
},
{
"itemId": 1,
"itemName": "Item B",
"itemPrice": 5.25,
"qty": 1
},
{
"itemId": 4,
"itemName": "Item C",
"itemPrice": 9.3,
"qty": 1
},
{
"itemId": 3,
"itemName": "Item D",
"itemPrice": 8.6,
"qty": 1
}
]
},
"shopId": 1,
"discount": 0,
"total": "28.90",
"method": "Card"
}

当我在slimframework中这样做时:

$order = $request->getParsedBody();
$this->response->withJson($order['cart']['items']);

此外,它返回完全相同的数组,如果我检查什么是$order['cart']['items'][0]['itemPrice'],我就会得到5.75

但当我迭代它时,就像:

foreach($order['cart']['items'] as $item)
{
$itemId = $item['itemId'];
$item = $item['itemName'];
$itemPrice = $item["itemPrice"];
$itemQty = $item["qty"];
}

我总是得到Illegal string offset 'itemPrice' & 'qty'.

我也尝试过以下方法,这不是问题:

$itemPrice;
foreach($order['cart']['items'] as $item)
{
$itemPrice .= $item["itemPrice"]
}
$this->response->withJson($itemPrice);

我可能遗漏了一些非常明显的东西,任何建议都将不胜感激。

您确实用$item['itemName'];覆盖了循环$item变量。从这一点开始,您的CCD_;itemPrice;也不是";数量;键,因为它是标量。你只需要改变变量名称。

foreach($order['cart']['items'] as $item)
{
$itemId = $item['itemId'];
$item = $item['itemName']; /// <--- ! $item is no longer an item
$itemPrice = $item["itemPrice"];
$itemQty = $item["qty"];
}

最新更新