【发布时间】:2017-04-04 06:53:16
【问题描述】:
这个问题是在解决 Hackerrank 中的一个问题时产生的。问题陈述是here。我们可以使用 Java(使用 Map 和 HashMap)或 Python 来解决这个问题。但是,当我尝试在 PHP 中解决问题时,我遇到了终止错误。这是因为代码执行时间过长。对于较小的文件大小,代码可以正常工作,但对于较大的文件,它会出错(由于超时而终止)。映射是如何在 PHP 中完成的?代码错了吗?有没有更好的方法来优化或让代码正常工作?
示例代码如下
<?php
$myFile = 'text1.txt';
$lines = file($myFile); //file as array
$n = (int)$lines[0];
$array = array();
$check = array();
foreach ($lines as $line)
{
list($key, $value) = explode(' ', $line);
if ($value !== NULL)
{
$array[$key] = $value;
}
else {
$check[]=trim($line);
}
}
$len=sizeof($check);
for($i=1;$i<$len;$i++) {
$flag=0;
foreach ($array as $key => $value){
if($key===$check[$i]) {
$flag=1;
echo $key.'='.$value.'<br />';
break;
}
}
if($flag===0)
echo 'Not found <br />';
$flag=0;
}
?>
文件的示例输入
档案一Download text1.txt file here
档案二Download text.text file here
注意:text1.txt 文件正在运行,问题出在 text.txt 文件(更大的文件)。
【问题讨论】:
-
它将爆炸值 sam 99912222,sam 作为键,电话号码作为值。这工作正常
标签: php arrays dictionary