Dieses Problem trat bei der Lösung eines Problems in Hackerrank auf. Die Problemstellung lautet here. Wir können dieses Problem mit Java (mit Map und HashMap) oder Python lösen. Aber während ich versuche, das Problem in PHP zu lösen, erhalte ich einen Abbruchfehler. Dies liegt daran, dass die Ausführung des Codes zu lange dauert. Für eine kleinere Dateigröße funktioniert der Code korrekt, aber für eine größere Datei gibt es einen Fehler (Abbruch wegen Zeitüberschreitung). Wie erfolgt das Mapping in PHP? Ist der Code falsch? Gibt es einen besseren Weg, um den Code zu optimieren oder richtig funktionieren zu lassen?Wörterbücher und Karten in PHP
Der Beispielcode unter
<?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;
}
?>
Eine Probe Eingabe in die Datei
Datei eine Download text1.txt file here
Datei zwei Download text.text file here
Hinweis: Text1.txt Datei funktioniert und das Problem ist mit text.txt Datei (größere Datei).
es wird den Wert sam 99912222, sam als Schlüssel und Telefonnummer als Wert explodieren. das funktioniert gut –