PHP - 最有效的字典代码

时间:2013-03-17 06:34:04

标签: php arrays dictionary

我使用以下代码从制表符分隔的文件中提取单词的定义,只有两列(单词,定义)。这是我尝试做的最有效的代码吗?

<?php
$haystack  = file("dictionary.txt");
$needle = 'apple';

$flipped_haystack = array_flip($haystack);

foreach($haystack as $value)
    {
    $haystack = explode("\t", $value);

    if ($haystack[0] == $needle)
        {
        echo "Definition of $needle: $haystack[1]";
        $defined = "1";
        break;
        }
    }

if($defined != "1")
    {
    echo "$needle not found!";
    }
?>

3 个答案:

答案 0 :(得分:5)

现在你正在做很多毫无意义的工作

1) load the file into a per-line array
2) flip the array
3) iterate over and explode every value of the array
4) test that exploded value

你无法真正避免第1步,但为什么你必须为2&amp; 3做所有无用的“忙碌工作”?

e.g。如果您的字典文本设置如下:

word:definition

然后一个简单的:

$matches = preg_grep('/^$word:(.*)$/', $haystack);

可以为您提供诀窍,代码更少。

答案 1 :(得分:2)

没有。很可能trie更有效,你没有对字典进行排序,也没有使用二叉树或三元树。我想如果你需要在一个庞大的字典中搜索你的方法太慢了。

答案 2 :(得分:2)

  

这是我正在尝试做的最有效的代码吗?

当然不是。
要仅查找一个针,您正在处理所有条目。

  

我将累积超过100,000个参赛作品。

然后使用数据库。