Jeg har lavet en simpel funktion som åbner en txt-fil med varenumre og priser og ud fra et givent varenummer indsættes prisen. Det fungerer egentlig fint, men i det øjeblik at der kommer mange varenumre, så begynder det at gå langsomt med at hente priserne ind.
Selve funktionen ser sådan her ud: function getPricestkmedmoms($no) { $filename = "priserstkmedmoms.web"; $filehandle = fopen($filename, "r"); while(!feof($filehandle)) { $line = fgets($filehandle, filesize($filename)); list($key, $value) = split("\|",$line); $array[$key] = $value; } fclose($filehandle); echo $array[$no]; }
Selve pris-filen er der et udsnit af her: 2685|570,00 2690|240,00 2695|570,00 2710|235,00 2730|235,00 2740|375,00 2743|355,00 2744|100,00 2745|885,00
Jeg ved godt at det er uhensigtsmæssigt at jeg åbner og lukker filen hver gang der skal indsættes en pris, men har ikke kunne løse problemet på andre måder.
Har bl.a. prøvet nedenstående for at undgå at åbne og lukke filen hele tiden: $filename = "prisermedmoms.web"; $filehandle = fopen($filename, "r"); $price = array (); while(!feof($filehandle)) { $line = fgets($filehandle, filesize($filename)); list($key, $value) = split("\|",$line); $price[$key] = $value; } fclose($filehandle);
function getPricemedmoms($no) { echo $price[$no]; }
Men der indsættes der slet ikke nogle priser!
Håber der er nogen der har lidt mere forstand på det her end jeg har og kan hjælpe mig.
Jo beklager forviringen, men det er fordi jeg har lavet 2 forskellige funktioner, så det er fra to forskellige funktioner, men priserne indsættes stadigvæk ikke ved den sidste.
Går det langsomt eller kan du ikke indsætte? Umiddelbart er der ingen kode som indsætter i filen? Og for at bruge $price array'et inde i funktionen, skal den gøres global
function getPricemedmoms($no) { global $price; echo $price[$no]; }
En anden måde at hente ud på:
<?php
$price = array();
$priser = file("prisermedmoms.web");
for($i = 0; $i < count($priser); $i++) {
$priser[$i] = trim($priser[$i]); // Fjerner "om luft" og linieksift.
Det var fordi at med mit første eksempel kørte det langsomt og det andet eksempel ville ikke indsatte noget. Selve koden der indsætter den rigtige pris ser eks. sådan her ud: <? getPricestkmedmoms('2710') ?>
Men det med at bruge "global $price;" virker - fantastisk!
Med hensyn til din anden metode, ved du så om der er nogen forskel i hastigheden mellem de to måder at gøre det på eller er det så lidt at det er ligegyldigt?
Uanset hvad, så send et svar så du kan få nogle point.
file() gir dig et array En for-løkke er vist hurtigere end while strpos() er vist hurtigere end explode
Men jeg har ikke selv testet noget !
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.