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

<?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!";
    }
?>

最佳答案

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

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&3做所有这些无用的“繁忙工作”?

例如如果您的字典文字设置如下:

word:definition


然后是一个简单的:

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


可以用更少的代码为您解决问题。

10-05 22:44
查看更多