我正在开发一个项目,我从数据库中选择多个项目(例如20个)并将它们存储在数组的缓存中。然后,当用户点击该项目时,我需要从数组中删除该项目。
而不是每次发生这种情况时删除缓存并重新触发查询(由同事建议)我想简单地从缓存中删除该项目,只在数量有限时重新触发查询缓存中的项目(比如5)
来自缓存的数组如下所示:
[
[
'item_id' => 10001,
'item_name' => "super-cool item",
'item_description' => "This item is awesome"
],
[
'item_id' => 10002,
'item_name' => "super-cool item",
'item_description' => "This item is awesome"
],
[
'item_id' => 10003,
'item_name' => "super-cool item",
'item_description' => "This item is awesome"
]
]
在选择三个项目并向用户显示之前,数组会被洗牌。
显然我需要做的是根据item_id
选择一个项目,取消设置该项目的密钥并重置缓存中的字段。
绊倒我的部分是根据item_id
选择项目,那么最有效的方法是什么?
答案 0 :(得分:1)
要删除数组中的索引,请使用unset()
函数。
因为您的值很少,所以您可以遍历数组并查找项ID的数组键:
<?php
$todeleteId=15;
foreach ($cache as $key=>$value) {
if ($value['item_id']==$todeleteId) {
unset($cache($key);
break;
}
}
您也可以将数组键设置为项ID,然后只需:
unset($todeleteId);
答案 1 :(得分:0)
几年有什么不同!如果其他人正在寻求解决类似问题的解决方案,处理它的最佳方法是这样的方法:
$toDelete = 1234;
$cache = array_filter($cache, function ($item) use ($toDelete) {
return (int) $item['id'] !== $toDelete;
});