我有一个关于如何更新我以前的数组的问题? 我的代码当前发生的情况是它只是添加新的会话数组,而不是更新声明的密钥,这是我的代码:
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);
$items = Session::get('items', []);
foreach ($items as &$item) {
if ($item['item_id'] == $id) {
$item['item_quantity']--;
}
}
Session::set('items', $items);
如果您的会话数组中有嵌套数组。您可以使用以下方式更新会话:
$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)
我想如果你使用的是 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));
我认为:最好的解决方案是 Session::forget('key')。但 $key 有问题。如果你 $key = $request->key - 你不能写forget('array.$request->key')。不起作用。这个问题有解决办法吗?
您可以使用
Session::forget('key');
删除会话中先前的数组。
并使用
Session::push
将新项目添加到会话中。