/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
fwrite() i foreach-løkker
Fra : Sune Fibaek


Dato : 05-11-02 16:38

Hej,

Jeg har et script som blandt andet indeholder:

/* laver en temporær fil til søgeresultatet */
$temp_fil = tempnam("./temp", "RESULTAT_");

/* arrayen renses for tal og .html ekstensionen og skrives til filen */
foreach ($hits as $fil => $hit) {
$file_name=explode(".", $fil);
$link_item=array_slice($file_name,-2);
$link_item=substr_replace($link_item[0],'',0,1);
$resultat=link_item($link_item,$hit);

$temp=fopen($temp_fil,"a");
fwrite($temp,$resultat);
fclose($temp);
}

Det er naturligvis meningen at hvert enkelt element i array'en skal
skrives til filen. Det sker bare ikke. Udenfor foreach-løkken fungerer
det fint.

Hvad er det i løkken som gør at det mislykkes?

--

Sune

 
 
Martin Seebach (05-11-2002)
Kommentar
Fra : Martin Seebach


Dato : 05-11-02 16:34


"Sune Fibaek" <oh-wonderful-spam@fibaek.dk> wrote in message
news:pan.2002.11.05.16.38.19.773825.6215@fibaek.dk...

> Hvad er det i løkken som gør at det mislykkes?

Det kan jeg ikke lige sige .. :(
Men du kan i hvert fald godt sætte fopen og fclose uden for løkken - Det gør
det hele lidt pænere og hurtigere, men jeg ved ikke om det vil løse dit
problem.


--
Venlig hilsen
Martin Seebach
- min email adresse virker..



Sune Fibæk (06-11-2002)
Kommentar
Fra : Sune Fibæk


Dato : 06-11-02 01:32

Martin Seebach wrote:

>> Hvad er det i løkken som gør at det mislykkes?
>
> Det kan jeg ikke lige sige .. :(

Næ, det fandt jeg heller aldrig ud af...

Min funktion og fwrite wirkedr sammen. Det samme gør fwrite og foreach. Mens
alle tre sammen bare var noget rod. Pyt. Jeg har skrevet mig ud af det :)

> Men du kan i hvert fald godt sætte fopen og fclose uden for løkken - Det
> gør det hele lidt pænere og hurtigere, men jeg ved ikke om det vil løse
> dit problem.

Det duer ikke. Meningen er, at hvert element i array'en skal skrives som en
linie i en temp-filen.

/Sune



--
Although I ask and though I Query
I know the truth; I grok the theory
Life is a multimedia of sins
So he who collects the most porn wins

http://ars.userfriendly.org/cartoons/?id=20000307&mode=classic

Martin Seebach (06-11-2002)
Kommentar
Fra : Martin Seebach


Dato : 06-11-02 00:51


"Sune Fibæk" <oh-wonderful-spam@fibaek.dk> wrote in message
news:3dc8539c$0$184$edfadb0f@dread11.news.tele.dk...
> Martin Seebach wrote:
> > Men du kan i hvert fald godt sætte fopen og fclose uden for løkken - Det
> > gør det hele lidt pænere og hurtigere, men jeg ved ikke om det vil løse
> > dit problem.
>
> Det duer ikke. Meningen er, at hvert element i array'en skal skrives som
en
> linie i en temp-filen.

Det kan du stadig sagtens. Du behøver ikke åbne og lukke filen for at skrive
en ny linje. Det klarer "\n" :=)


--
Venlig hilsen
Martin Seebach
- min email adresse virker..



Sune Fibæk (06-11-2002)
Kommentar
Fra : Sune Fibæk


Dato : 06-11-02 13:19

Martin Seebach wrote:

>> Det duer ikke. Meningen er, at hvert element i array'en skal skrives som
> en
>> linie i en temp-filen.
>
> Det kan du stadig sagtens. Du behøver ikke åbne og lukke filen for at
> skrive en ny linje. Det klarer "\n" :=)

Ahhh ja. Jeg havde set mig blind på problemet og bare set filoperationen som
en 'klump' og derfor slet ikke overvejet at sætte fopen og fclose /udenfor/
løkken mens fwrite blev /indenfor/. Tja...

Tak for hjælpen.

/Sune


--
Although I ask and though I Query
I know the truth; I grok the theory
Life is a multimedia of sins
So he who collects the most porn wins

http://ars.userfriendly.org/cartoons/?id=20000307&mode=classic

Niels Andersen (06-11-2002)
Kommentar
Fra : Niels Andersen


Dato : 06-11-02 08:08

Sune Fibaek wrote in <pan.2002.11.05.16.38.19.773825.6215@fibaek.dk>:
> foreach ($hits as $fil => $hit) {
> $file_name=explode(".", $fil);
> $link_item=array_slice($file_name,-2);
> $link_item=substr_replace($link_item[0],'',0,1);
> $resultat=link_item($link_item,$hit);
>
> $temp=fopen($temp_fil,"a");
> fwrite($temp,$resultat);
> fclose($temp);
> }

Nu siger du godt nok at du har fået det til at virke, men måske kan du lære
lidt af dette. Jeg har flyttet fopen og fclose uden for løkken (der er
ingen grund til at have den indeni) og indsat en "debug"-linje.

$temp=fopen($temp_fil,"a");

foreach ($hits as $fil => $hit) {
$file_name=explode(".", $fil);
$link_item=array_slice($file_name,-2);
$link_item=substr_replace($link_item[0],'',0,1);
$resultat=link_item($link_item,$hit);

echo "Skriver nu '$resultat'<br>\n";
fwrite($temp,$resultat);
}
fclose($temp);

Så kan du se om fejlen er i fwrite-linjen eller før.

--
Mvh.

Niels Andersen
(la nels. anersyn.)

Sune Fibæk (06-11-2002)
Kommentar
Fra : Sune Fibæk


Dato : 06-11-02 13:23

Niels Andersen wrote:

> Sune Fibaek wrote in <pan.2002.11.05.16.38.19.773825.6215@fibaek.dk>:
>> foreach ($hits as $fil => $hit) {
>
> Nu siger du godt nok at du har fået det til at virke, men måske kan du
> lære lidt af dette. Jeg har flyttet fopen og fclose uden for løkken (der
> er ingen grund til at have den indeni) og indsat en "debug"-linje.

Ja, jeg indså også her bagefter at det var voldsomt at åbne filen igen og
igen. Debug-linien har jeg haft indsat tidligere, men det burde jeg jo nok
have fortalt. Som skrevet virker de tre elementer (foreach, fwrite og
funktionen) hver især og parvis, men ikke sammen...

Som sagt er problemet løst på anden vis. Tak for hjælpen :)


/Sune

--
Although I ask and though I Query
I know the truth; I grok the theory
Life is a multimedia of sins
So he who collects the most porn wins

http://ars.userfriendly.org/cartoons/?id=20000307&mode=classic

Søg
Reklame
Statistik
Spørgsmål : 177504
Tips : 31968
Nyheder : 719565
Indlæg : 6408549
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste