我需要在PHP中设计一个数据结构,在那里我可以将一个值集合映射到另一个值的集合。它的用例是用户订阅的映射。
array(
array('news', 'tech') => array(0, 1),
array('news', 'tech', 'gossip') => array(2, 3, 4)
)
这里有没有更优化的设计可以使用?什么是PHP中合适的实现?
为了澄清,用户和订阅有一种多对多的关系,您希望能够快速查找给定用户的订阅,反之亦然?
如果是这样,您可以使用的一种设计是一个对象,它封装了两个多映射,一个是User -> Array<Subscription>
,一个为Subscription -> Array<User>
,并通过在其add
和remove
方法中同时更新它们来维护这两个映射(只需要一个用户和一个订阅作为参数)。