在解決Hackerrank中的問題時產生了此問題。問題陳述是here。我們可以使用Java(使用Map和HashMap)或Python來解決這個問題。但是,當我嘗試解決PHP中的問題時,我得到一個終止錯誤。這是因爲代碼執行時間過長。對於較小的文件大小,代碼工作正常,但對於較大的文件,則會發生錯誤(由於超時而終止)。如何在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;
}
?>
A輸入到文件
文件一個Download text1.txt file here
文件2 Download text.text file here
樣品注意:text1.txt文件正在工作,問題出在text.txt 文件(較大的文件)。
它將爆炸sam 99912222的值,sam作爲鍵值和電話號碼。這是工作正常 –