2009-09-16 68 views
0

我有大約80個這個類的實例稱爲項目,並希望通過它們的ID或名稱有效地搜索對象。什麼是最好的方式來存儲和搜索類對象(在PHP中)?

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

    //methods 
} 
?> 

我正在使用PHP5。

+0

我會認爲一個簡單的foreach循環應該和你應該關心的一樣高效。其他任何可能會導致不必要的開銷或不值得你花時間。我假設你在問題的背景下問你想要解決的問題。你正在處理的課程非常大? – Anthony 2009-09-16 16:37:35

+0

是的,一個foreach循環會正常工作。 Item類是大約70行代碼,相當小。 – 2009-09-16 17:10:28

回答

2

假設沒有重複的名字或ID:

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

如果您有重複(名字;我想象的定義有沒有重複的ID),那麼你需要制定出如何處理。您可以將所有重複項存儲在一個鍵下(因此該值將成爲匹配數組)。

或者您的意思是更復雜的搜索?如果是這樣,一個簡單的變體可能是將項目名稱分解成單詞和/或短語,然後將它們相應地編入一個數組中。

+0

是$ items一個包含對象引用的數組嗎?我想要一個簡單的搜索,你提供的代碼將完成這項工作。謝謝 – 2009-09-16 17:12:54

1

我會考慮製作一個ItemIndex類;

這將允許您保留任意數量的 獨立索引,根據需要重載比較和 搜索功能。

1

如果您有80個實例,那麼使用哪個選項確實無關緊要。即使您的搜索量爲N平方,我認爲在這裏投入時間進行性能優化也不值得。做最簡單的事情,然後簡介;如果這太可怕了,那麼只有考慮增加實施的複雜性才能使其更快。

相關問題