更新之前的会话数组 Laravel

问题描述 投票:0回答:5

我有一个关于如何更新我以前的数组的问题? 我的代码当前发生的情况是它只是添加新的会话数组,而不是更新声明的密钥,这是我的代码:

foreach ($items_updated as $key => $added)
{
    if ($id == $added['item_id'])
    {
        $newquantity = $added['item_quantity'] - 1;
        $update = array(
            'item_id' => $items['item_id'],
            'item_quantity' =>  $newquantity,
        );
    }
}

Session::push('items', $updated);
php arrays laravel laravel-4
5个回答
11
投票
$items = Session::get('items', []);

foreach ($items as &$item) {
    if ($item['item_id'] == $id) {
        $item['item_quantity']--;
    }
}

Session::set('items', $items);

3
投票

如果您的会话数组中有嵌套数组。您可以使用以下方式更新会话:

$session()->put('user.age',$age);

示例

假设您的会话中有以下数组结构

$user = [
     "name" => "Joe",
     "age"  => 23
]

session()->put('user',$user);

//updating the age in session
session()->put('user.age',49);

如果您的会话数组有 n 个数组深,则使用点 (.) 后跟键名称来到达第 n 个值或数组,例如

session->put('user.comments.likes',$likes)


0
投票

我想如果你使用的是 laravel 5.0,这对你有用。但还要注意,我还没有在 laravel 4.x 上测试过它,但是,我希望得到相同的结果:

//get the array of items (you will want to update) from the session variable
$old_items = \Session::get('items');

//create a new array item with the index or key of the item 
//you will want to update, and make the changes you want to  
//make on the old item array index.
//In this case I referred to the index or key as quantity to be
//a bit explicit
$new_item[$quantity] = $old_items[$quantity] - 1;

//merge the new array with the old one to make the necessary update
\Session::put('items',array_merge($old_items,$new_item));

0
投票

我认为:最好的解决方案是 Session::forget('key')。但 $key 有问题。如果你 $key = $request->key - 你不能写forget('array.$request->key')。不起作用。这个问题有解决办法吗?


-1
投票

您可以使用

Session::forget('key');
删除会话中先前的数组。

并使用

Session::push
将新项目添加到会话中。

© www.soinside.com 2019 - 2024. All rights reserved.