2013-09-05 107 views
3

我在尋找一種有效的算法,讓我來搜索多維數組的特定值。我有這樣的事情:高效的多維數組的搜索算法實現在PHP

$stuff = array(
    array(
     'id' => 'abc123', 
     'name' => 'test' 
     'contents' => 'Lorem ipsum' 
    ), 
    array(
     'id' => 'abc123', 
     'name' => 'test' 
     'contents' => 'Lorem ipsum' 
    ), 
    array(
     'id' => 'abc123', 
     'name' => 'test' 
     'contents' => 'Lorem ipsum' 
    ), 
    array(
     'id' => 'abc43', 
     'name' => 'test' 
     'contents' => 'Lorem ipsum' 
    ), 
    array(
     'id' => 'xyzh31', 
     'name' => 'test' 
     'contents' => 'Lorem ipsum' 
    ), 
); 

我必須找到id = abc43的項目。我如何有效地做到這一點?你知道比遍歷整個數組更好的算法嗎?

+0

使用'array_filter'函數檢查您要查找的id值是首先想到的... – CBroe

回答

0

我認爲你應該使用array_multisort()這是有效的,因爲它可以讓我個人用它在矩陣搜索值。

0

你可以用在array_multisort()如前所述,然後實現二進制搜索算法。我會嘗試用seudocode來描述它。

  1. 嘗試在(子)的中間陣列
  2. 如果該項目是小於在陣列
  3. 的低部分中的元件重複步驟1如果該項目是小於元件重複步驟1在陣列的高部分
+0

這些ID不是順序的。 – vinnylinux

+2

我想他們都是獨一無二的,它們是字符串,就可以訂購。 –