gpt4 book ai didi

php - 如何从 laravel session 中的单个命令中删除多个键

转载 作者:可可西里 更新时间:2023-11-01 01:00:47 24 4
gpt4 key购买 nike

假设我有一个像这样的 session 数组

array(
'boking' = array(
'index1' => 'value1'
'index2' => 'value2'
),
'return' = array(
'index1' => 'value1'
'index2' => 'value2'
),
'search' = array(
'index1' => 'value1'
'index2' => 'value2'
)
)

现在我想删除 bokingsearch

为了完成这个任务我尝试过

Session::forget('boking');
Session::forget('search');

它工作正常。

但是我想在一个命令中删除这个多键。有没有可能在一条命令中做到这一点?

最佳答案

根据source code Session::forget 定义为

/**
* Remove an item from the session.
*
* @param string $key
* @return void
*/
public function forget($key)
{
array_forget($this->attributes, $key);
}

array_forget函数定义为

/**
* Remove one or many array items from a given array using "dot" notation.
*
* @param array $array
* @param array|string $keys
* @return void
*/
function array_forget(&$array, $keys)
{
return Arr::forget($array, $keys);
}

由于 Session::forget 不会在 $key 上强制执行任何类型并将您传递给它的任何类型传递给 array_forget,它接受 array|string $keys,你应该可以做到

Session::forget(['boking', 'search']);

但是,因为 Session::forget 没有将 array 列为 $key 的可能值,并以单数形式显式命名参数形式,你不应该依赖这种行为。它可能会改变。再一次,它也可能只是一个文档错误。考虑与 Laravel 的家伙开一张票。

为了完整性和引用,这里是 Arr::forget 的代码:

/**
* Remove one or many array items from a given array using "dot" notation.
*
* @param array $array
* @param array|string $keys
* @return void
*/
public static function forget(&$array, $keys)
{
$original =& $array;

foreach ((array) $keys as $key)
{
$parts = explode('.', $key);

while (count($parts) > 1)
{
$part = array_shift($parts);

if (isset($array[$part]) && is_array($array[$part]))
{
$array =& $array[$part];
}
}

unset($array[array_shift($parts)]);

// clean up after each pass
$array =& $original;
}
}

关于php - 如何从 laravel session 中的单个命令中删除多个键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27675186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com