如果我跑:
echo '<pre>';print_r(Cache('test'));echo '</pre>';die();
结果如下:
Array
(
[0] => Array
(
[id] => 42
[name] => real madrid
[description] => ronaldo
)
[1] => Array
(
[id] => 41
[name] => chelsea
[description] => hazard
)
)
我想删除包含id
= 42。
我试着这样:
$id = 42;
foreach (Cache('test') as $key => $value) {
if($key['id'] == $id) {
Cache::forget($key);
}
}
然后,我跑:
dd(Cache('test'));
但是id
= 42的密钥仍在那里。
答案 0 :(得分:2)
缓存中的条目称为test
,它是一个包含多个元素的数组;因此,尝试从id为42
的缓存中删除条目将不起作用,因为条目42不是缓存条目,只是数组的一部分。
$ttl = 240;
$id = 42;
// retrieve the array from Cache
$value = Cache::get('test');
// Identify the entry with id of 42
$entry = array_flip(array_column($value, 'id'));
// delete that entry from the array
unset($value[$entry[$id]]);
// restore the modified array to cache
Cache::put('test', $value, $ttl)