foreach 返回为空

我对我正在做的循环有点怀疑,因为它返回的是空值。


首先,我收到这样的物品:


$items = Session::get('items');

$deco = json_decode($items, true);

如果我回来,$deco我会得到这个:


{

 "items":[

      {

        "id":1,

        "inventoryID":1,

        "title":"Product 1",

        "quantity":1,

        "unit_price":20,

        "image":"img.png"

      },


      {

        "id":2,

        "inventoryID":1,

        "title":"Product2",

        "quantity":1,

        "unit_price":25,

        "image":"img.png"

       }

    ]

}

现在,在循环中(我用它来更改一些键的值以集成贝宝)我有这个:


$results = [];

    foreach($deco['items'] as $element) {


        $name=$element['title'];

        $quantity=$element['quantity'];

        $sku= $element['id'];

        $price=$element['unit_price'];



        $item = new Item();

        $item -> setName($name)

        ->setCurrency('USD')

        ->setQuantity($quantity)

        ->setSku($sku) 

        ->setPrice($price);


        $results[]=$item;

    }  

如果我返回return $item(在循环外),我(如预期)只得到一个值,而不是所有集合:


{

"name": "Product2",

"currency": "USD",

"quantity": 1,

"sku": 2,

"price": "25"

}

但是,如果我返回return $results我需要的 var,它会给我这个(它会根据需要执行项目的 {},但返回空):


[

{},

{}

]

整个代码看起来像:


public function test(){

    $items = Session::get('items');

    $deco = json_decode($items, true);

    $results = [];

    foreach($deco['items'] as $element) {


        $name=$element['title'];

        $quantity=$element['quantity'];

        $sku= $element['id'];

        $price=$element['unit_price'];



        $item = new Item();

        $item -> setName($name)

        ->setCurrency('USD')

        ->setQuantity($quantity)

        ->setSku($sku) 

        ->setPrice($price);


        $results[]=$item;

    }  

    return $results;

}


大话西游666
浏览 179回答 2
2回答

ITMISS

它的发生仅是因为 JMS 序列化。我猜在控制器级别,您可能需要检查是否已应用任何序列化组。

绝地无双

答案(感谢 Ionica 在 discord 的 laravel 社区)是:    $items = Session::get('items');    $deco = json_decode($items,true);    $itemList = new ItemList();foreach($deco['items'] as $element) {    $item = new Item();    $item->setName($element['title'])        ->setCurrency('USD')        ->setQuantity($element['quantity'])        ->setSku($element['id'])         ->setPrice($element['unit_price']);    $itemList->addItem($item);}$arr = $itemList->toArray();return $arr;
打开App,查看更多内容
随时随地看视频慕课网APP