PHP多维数组中的Select键


PHP Select key in multi-dimentional array

我正在处理一个项目,在该项目中,我从数据库中选择多个项(比如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;
});