存储和搜索类对象的最佳方法是什么(在PHP中)?

时间:2009-09-16 16:32:31

标签: php oop optimization search

我有大约80个这个名为Items的实例,并希望通过ID或NAME有效地搜索对象。

<?php
class Item
{
    public $id;
    public $name;

   //methods
}
?>

我正在使用PHP5。

3 个答案:

答案 0 :(得分:2)

假设没有重复的名称或ID:

$ids = array();
$names = array();
foreach ($items as $item) {
  $ids[$item->id] = $item;
  $names[$item->name] = $item;
}

如果您有重复项(名称;我认为根据定义没有重复的ID),那么您需要弄清楚如何处理它。您可以将所有重复项存储在一个键下(因此该值将成为匹配数组)。

或者你的意思是更复杂的搜索?如果是这样,一个简单的变体可能是将项目名称拆分为单词和/或短语,然后将它们相应地索引到数组中。

答案 1 :(得分:1)

我会考虑制作一个ItemIndex类;

这将允许您保持任意数量的 独立索引,重载比较和 适当地搜索功能。

答案 2 :(得分:1)

如果您有80个实例,那么使用哪个选项并不重要。即使你的搜索是N平方,我也不认为在这里花时间进行性能优化是值得的。做最简单的事情,然后剖析;如果它太可怕了,那么只考虑增加实现的复杂性以使其更快。

相关问题