|
| 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
| |
|
|