我正在处理一个项目,在该项目中,我从数据库中选择多个项(比如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
选择项目,那么最有效的方法是什么?
要删除数组中的索引,请使用unset()
函数。因为你的值太少了,所以你可以在数组中循环,然后为项目id寻找数组键:
<?php
$todeleteId=15;
foreach ($cache as $key=>$value) {
if ($value['item_id']==$todeleteId) {
unset($cache($key);
break;
}
}
此外,您可以将数组键设置为项目id,然后:
unset($todeleteId);
几年的时间有多大的不同!如果其他人正在寻求类似问题的解决方案,最好的解决方法是这样的:
$toDelete = 1234;
$cache = array_filter($cache, function ($item) use ($toDelete) {
return (int) $item['id'] !== $toDelete;
});