Php 如何更新Laravel会话数组中的单个值?

Php 如何更新Laravel会话数组中的单个值?,php,session,laravel,laravel-5,Php,Session,Laravel,Laravel 5,我有这样一个会话数组: [ { "itemId": "1", "itemQuantity": "3", "itemName": "Item_name1" }, { "itemId": "2", "itemQuantity": "2", "itemName": "Item_name2" } ] 如果我知道itemId,如何更新单个项目的数量 我知道这样做的一种方法是获取

我有这样一个会话数组:

[
    {
        "itemId": "1",
        "itemQuantity": "3",
        "itemName": "Item_name1"
    },
    {
        "itemId": "2",
        "itemQuantity": "2",
        "itemName": "Item_name2"
    }
]
如果我知道
itemId
,如何更新单个项目的数量

我知道这样做的一种方法是获取整个数组,循环遍历数组,进行更新,然后将整个数组“放”回会话中。 这是唯一的办法吗

我是初学者。请帮忙。
谢谢。

对象是通过引用传递的,因此您可以简单地执行此操作

foreach(会话::获取('cart')作为$item){
如果($item->itemId=='2'){//,则表示我们希望将itemid2的数量增加一倍
$item->itemQuantity=$item->itemQuantity*2;
打破
}
}
dd(会话::get('cart');
输出:

array:2 [▼
  0 => {#162 ▼
    +"itemId": "1"
    +"itemQuantity": "3"
    +"itemName": "Item_name1"
  }
  1 => {#163 ▼
    +"itemId": "2"
    +"itemQuantity": 4  <<--- the quantity has been doubled
    +"itemName": "Item_name2"
  }
]
数组:2[▼
0 => {#162 ▼
+“itemId”:“1”
+“项目数量”:“3”
+“项目名称”:“项目名称1”
}
1 => {#163 ▼
+“itemId”:“2”

+“itemQuantity”:4如果您使用的是数组会话驱动程序,恐怕这是唯一的选择。我还可以使用什么驱动程序?谢谢!嘿!出于好奇,您的
itemId
是否自动递增?如果是,您是如何实现的?@peterm我正在尝试类似的方法,但我得到的是“尝试获取非对象的属性”“$item->itemQuantity=$item->itemQuantity*2;”@peterm是的,我不知道为什么会发生这种情况,因为我的代码是基于您的:
foreach(Session::get('cart.program')as$item){if($item->id='1xxx'){$item->segment_weekday='9';break;}
@peterm var\u dump(Session get::get('cart.program')):
array(size=2)0=>array(size=1)'id'=>string'1'(长度=1)1=>array(size=1)'id'=>string'1xxx'(长度=4)
@peterm感谢您的帮助。我可以访问数组成员,只是不知道如何通过引用
&$item
传递
$item
以保存回会话。@peterm在