3

我正在寻找一种有效的算法,它允许我在多维数组中搜索特定值。我有这样的事情:

$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 的项目。我怎样才能有效地做到这一点?你知道比遍历整个数组更好的算法吗?

4

2 回答 2

0

您可以如前所述使用 array_multisort(),然后实现二进制搜索算法。我将尝试用 seudocode 来描述它。

  1. 尝试在(子)数组的中间
  2. 如果项目小于元素,则在数组的低部分重复步骤 1
  3. 如果项目小于元素,则在数组的高位重复步骤 1
于 2013-09-05T15:22:59.470 回答
0

我认为您应该使用array_multisort()这尽可能高效,我个人使用它来搜索矩阵中的值。

于 2013-09-05T14:30:11.363 回答