我有大约80个这个名为Items的实例,并希望通过ID或NAME有效地搜索对象。
<?php
class Item
{
public $id;
public $name;
//methods
}
?>
我正在使用PHP5。
答案 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平方,我也不认为在这里花时间进行性能优化是值得的。做最简单的事情,然后剖析;如果它太可怕了,那么只考虑增加实现的复杂性以使其更快。