我正在使用以下代码从只有两列(单词,定义)的制表符分隔文件中提取单词的定义。这是我要执行的最有效的代码吗?
<?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);
可以用更少的代码为您解决问题。