在PHP中存储一组唯一的键
我有一组唯一的模型主键(字符串或整数),我希望将其缓存在内存中 我将测试集合中是否存在键,并从集合中添加和删除键 我很想使用标准数组的“键”端并执行以下操作:在PHP中存储一组唯一的键,php,arrays,data-structures,Php,Arrays,Data Structures,我有一组唯一的模型主键(字符串或整数),我希望将其缓存在内存中 我将测试集合中是否存在键,并从集合中添加和删除键 我很想使用标准数组的“键”端并执行以下操作: $keys[$key] = 1 // add unset($keys[$key]) // remove isset($keys[$key]) // check existence 但这让人觉得我在工作中使用了错误的工具,因为我不需要数组的“值”端(设置为1)。我还查看了SPLHeap类,并尝试使用其中的一个 我想这是一个相当常见的
$keys[$key] = 1 // add
unset($keys[$key]) // remove
isset($keys[$key]) // check existence
但这让人觉得我在工作中使用了错误的工具,因为我不需要数组的“值”端(设置为1)。我还查看了SPLHeap
类,并尝试使用其中的一个
我想这是一个相当常见的问题,这里使用哪种结构最好 我认为您自己建议的使用数组键实现集合语义的解决方案实际上并不奇怪。我知道一些Java的
Set
实现在内部使用底层Map
(基本上与PHP数组具有相同的接口)。Sun/Oracle工程师可能知道他们在做什么:)SPLHeap肯定不是正确的数据结构,因为堆是关于对它所包含的数据进行排序访问的,PHP的堆实现在一次遍历后会自动清空。在我看来,这实际上是一种不错的技术;肯定是我在php中看到了很多东西。为什么不将主键作为值存储在数组中呢$keys=['key1'、'key2'、'key3'、…]
@upful,因为查找/删除元素需要遍历值O(n)。